Php 产品和类别之间的关系,生成查询

Php 产品和类别之间的关系,生成查询,php,mysql,sql,Php,Mysql,Sql,我在mysql中有一个多对多关系: 类别表: -------------------- | id | title | -------------------- | 1 | cat1 | -------------------- | 2 | cat2 | -------------------- | 3 | cat3 | -------------------- | 4 | cat4 | --------------------

我在mysql中有一个多对多关系:

类别表:

--------------------
| id      | title |
--------------------
| 1       | cat1  |
--------------------
| 2       | cat2  |
--------------------
| 3       | cat3  |
--------------------
| 4       | cat4  |
--------------------
--------------------------------------
| id      | id_category | id_product |
--------------------------------------
| 1       |           1 |          2 |
--------------------------------------
| 2       |           2 |          2 |
--------------------------------------
| 3       |           3 |          2 |
--------------------------------------
| 4       |           1 |          1 |
--------------------------------------
| 5       |           2 |          1 |
--------------------------------------
产品表:

--------------------
| id      | title  |
--------------------
| 1       | prod1  |
--------------------
| 2       | prod2  |
--------------------
产品类别表:

--------------------
| id      | title |
--------------------
| 1       | cat1  |
--------------------
| 2       | cat2  |
--------------------
| 3       | cat3  |
--------------------
| 4       | cat4  |
--------------------
--------------------------------------
| 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或category.id=2)和(category.id=3或category.id=4)

在这种情况下,我只想选择产品2

如何构造SQL查询?

请尝试以下查询:

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

到目前为止您尝试了什么?此sql查询不返回任何结果result@user3468684很抱歉,子查询的表别名为pc,我现在已将其更改为pc2。请再试一次。