簡體   English   中英

MySQL篩選器產品類別AND&OR

[英]MySQL Filter Products Category AND & OR

我正在嘗試按類別過濾結果。 所以從下面的ItemKeywords表

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

這應該只會拉高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 

和別的。 我似乎無法弄清楚。

任何見識都會很棒。

謝謝

  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 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM