2012-01-11 52 views
0

在MySQL数据库中,图库中的图像可以分配到一个产品范围,以便可以过滤图库以仅显示来自特定范围的图像。带有多个选项的字段的MySQL数据库查询

目前主要图像库中包含: -

$query_Cur_range_img = "SELECT * FROM `images` WHERE active = 'y' AND gallery = '1' LIMIT ".$showfrom.", ".$max; 

如果画廊“1”,那么图像将被显示在主油道(ALL)。

某些图像也被添加到产品的范围从一个单独的数据库列“product_range_id”和的产品范围的ID内的是1,2或3。

在用于过滤库包含文件中,我们有: -

$query_Cur_range_img = "SELECT * FROM `images` WHERE active = 'y' AND gallery = '1' AND product_range_id = '1' LIMIT ".$showfrom.", ".$max; 

但是,这只显示仅分配给product_range_id 1的图像。一些图像会显示在产品范围2和3中,例如1或2个。我想我们需要包含一个OR语句?任何帮助编写这个查询将不胜感激,所以如上所述,我认为我们需要AND product_range_id ='1'(或2或3)例如?

在此先感谢。

UPDATE

我试过以下,但所有这一切被愤怒ID过滤图像时做1是只分配给范围ID 1(不包括分配给量程识别的4张图片显示的图像和2例如)。

$query_Cur_range_img = "SELECT * FROM `images` WHERE active = 'y' AND gallery = '1' AND (product_range_id = '1' OR product_range_id = '1' AND product_range_id = '2' OR product_range_id = '1' AND product_range_id = '3') LIMIT ".$showfrom.", ".$max; 

更新 - 13/01/2012

现在已经得到解决 - 修正以下(感谢埃伦)

$query_Cur_range_img = "SELECT * FROM images WHERE active = 'y' AND gallery = 1 AND (FIND_IN_SET('1', product_range_id) OR product_range_id = '1') LIMIT ".$showfrom.", ".$max; 

而且

$query_Cur_range_img = "SELECT * FROM images WHERE active = 'y' AND gallery = 1 AND (FIND_IN_SET('2', product_range_id) OR product_range_id = '2') LIMIT ".$showfrom.", ".$max; 

而且

$query_Cur_range_img = "SELECT * FROM images WHERE active = 'y' AND gallery = 1 AND (FIND_IN_SET('3', product_range_id) OR product_range_id = '3') LIMIT ".$showfrom.", ".$max; 

根据需要...

+0

什么是表结构?给出的选项应该可以工作,但似乎表结构可能与预期不同。 – Brian 2012-01-11 13:55:04

回答

2

这够好吗?

SELECT * FROM `images` WHERE active = 'y' AND gallery = '1' AND (product_range_id = '1' OR product_range_id = '2' OR product_range_id = '3') LIMIT ".$showfrom.", ".$max."; 

编辑

$query_Cur_range_img = "SELECT * FROM images WHERE active = 'y' AND gallery = 1 AND 
(FIND_IN_SET('1', product_range_id) OR product_range_id = '1') LIMIT ".$showfrom.", ".$max; 
+0

感谢您的评论 - 这不起作用,因为它只显示在任何product_range_id 1,2或3中显示的图像,但不包括可能分配给多个范围ID的图像(例如1和2) )。谢谢 – zigojacko 2012-01-11 13:29:34

+0

好吧,如果没有看到你的表格结构和一些例子,这是相当困难的。请参阅编辑。 – Elen 2012-01-11 13:40:02

+0

我明白如果没有确切地看到我们有什么是很难的 - 你最近的编辑打破了页面上的自定义错误信息“页码不存在”(我不明白你是否能够提供帮助)不知道为什么发生:/ – zigojacko 2012-01-11 13:47:34

2

尝试这样的:

$query_Cur_range_img = "SELECT * FROM `images` 
WHERE active = 'y' 
AND gallery = '1' 
AND product_range_id IN ('1', '2', '3') 
LIMIT ".$showfrom.", ".$max; 

希望这将有助于,,

PS如果你得到product_range_id随pH p然后plz永远不会忘记使用mysql_real_escape_string()

+0

感谢您的帮助,我已经尝试过,现在按照product_range_id 1过滤图片时,它会包含仅分配给product_range_id 2以及其他图片的图片。这只需显示分配给另一个类别的图像,但必须分配给product_range_id 1.谢谢 – zigojacko 2012-01-11 13:22:08