产品和类别之间的关系,构建查询

时间:2014-03-27 13:31:38

标签: php mysql sql

我在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查询?

1 个答案:

答案 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)
)