我在mysql中有很多关系:
分类表:
--------------------
| id | title |
--------------------
| 1 | cat1 |
--------------------
| 2 | cat2 |
--------------------
| 3 | cat3 |
--------------------
| 4 | cat4 |
--------------------
产品表:
--------------------
| id | title |
--------------------
| 1 | prod1 |
--------------------
| 2 | prod2 |
--------------------
产品类别表:
--------------------------------------
| id | id_category | id_product |
--------------------------------------
| 1 | 1 | 2 |
--------------------------------------
| 2 | 2 | 2 |
--------------------------------------
| 3 | 3 | 2 |
--------------------------------------
| 4 | 1 | 1 |
--------------------------------------
| 5 | 2 | 1 |
--------------------------------------
我想选择分配到类别1或2以及类别3或4的产品。
在SQL中,它是这样的:(category.id = 1 OR category.id = 2)AND(category.id = 3 OR category.id = 4)。
在这种情况下,我只想选择产品2。
如何构建SQL查询?
答案 0 :(得分:1)
尝试以下查询:
SELECT *
FROM product_category pc
WHERE
(pc.id_category=1 OR pc.id_category=2)
AND EXISTS
(SELECT *
FROM product_category pc2
WHERE
pc2.id_product = pc.id_product
AND
(pc2.id_category=3 OR pc2.id_category=4)
)