2014-03-27 37 views
0

我有一个多对多的关系在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或者category.id = 4)。

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

如何构造一个SQL查询?

+1

你有什么到目前为止已经试过? – jmail

回答

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

此sql查询不会返回任何结果 – kevas

+0

@ user3468684对不起,子查询具有表别名pc,我现在已将其更改为pc2。请再试一次。 –

+0

是的,它的工作原理。谢谢。 – kevas