Php 产品和类别之间的关系,生成查询
我在mysql中有一个多对多关系: 类别表:Php 产品和类别之间的关系,生成查询,php,mysql,sql,Php,Mysql,Sql,我在mysql中有一个多对多关系: 类别表: -------------------- | id | title | -------------------- | 1 | cat1 | -------------------- | 2 | cat2 | -------------------- | 3 | cat3 | -------------------- | 4 | cat4 | --------------------
--------------------
| 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。请再试一次。