2012-01-11 93 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