2014-03-27 91 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