2015-03-30 60 views
0

我試圖按類別過濾結果。 所以從下面MySQL過濾器產品分類AND&OR或

SELECT prod_id FROM ItemKeywords 
WHERE (keyword_id=96 OR keyword_id=96) /* Metal category */ 
AND keyword_id=55 /* Center category */ 

WHERE (Rose Gold OR White Gold) 
AND Princess Cut 

的ItemKeywords表這應該只拉起100657和102163

無論是玫瑰金或白金

但需要公主方形

== Keywords ========================== 
|keyword_id |KeywordName  |category 
| 55   | Princess Cut | Center 
| 96   | Rose Gold  | Metal 
| 102   | White Gold  | Metal 
| 88   | Platinum  | Metal 

== ItemKeywords ========================== 
|keyword_id |prod_id   |category 
| 96   | 100657   | Metal 
| 55   | 100657   | Center 
| 102   | 102163   | Metal 
| 55   | 102163   | Center 
| 88   | 100686   | Metal 
| 55   | 100686   | Center 

我試過這個

SELECT DISTINCT(p.prod_id), p.header, p.image 
FROM tblproducts AS p 
JOIN ItemKeywords AS k1 ON k1.prod_id=p.prod_id AND k1.keyword_id=96 OR k1.keyword_id=101 
JOIN ItemKeywords AS k2 ON k2.prod_id=p.prod_id AND k2.keyword_id=55 
WHERE p.active=1 

SELECT DISTINCT(p.prod_id), p.header, p.image 
FROM ItemKeywords AS k JOIN tblproducts AS p ON k.prod_id=p.prod_id 
WHERE p.active=1 AND p.retire=0 AND p.category_id=2 
AND k.keyword_id=55 AND k.keyword_id=102 OR k.keyword_id=101 

及其它。我似乎無法弄清楚這一點。

任何見識都會很棒。

感謝

+0

你需要在你的條件組,括號就像在你的頂部查詢 – 2015-03-30 23:23:45

回答

0
  1. 既然你想有兩種可能的「keyword_id」,你需要包括表ItemKeyWords兩次在你的選擇。一次用於金屬類別,另一次用於中心類別。
  2. 接下來,您需要篩選WHERE子句中的結果。

SELECT DISTINCT(p.prod_id), p.header, p.image 
 
FROM tblproducts AS p 
 
JOIN ItemKeywords AS k1 ON k1.prod_id=p.prod_id 
 
JOIN ItemKeywords AS k2 ON k2.prod_id=p.prod_id 
 
WHERE p.active=1 AND p.retire=0 AND p.category_id=2 
 
AND (k1.keyword_id=96 OR k1.keyword_id=102) AND k2.keyword_id=55