2017-06-15 67 views
1

我是MySQL的新手,試圖瞭解連接是如何工作的。我有兩個表:categoriesproducts每個與idname字段。 第三個表是product_to_category(多對多),其中category_idproduct_id瞭解連接:列出沒有指定產品的類別

我想列出包含指定產品的所有類別(id = 5)。 要做到這一點,我做了以下查詢:

 SELECT `categories`.`id`, `categories`.`name` 
     FROM `categories` 
     LEFT JOIN `product_to_category` 
     ON `categories`.`id` = `product_to_category`.`category_id` 
     WHERE `product_to_category`.`product_id` = 5 

我想知道如果有可能的東西相反:列出不包含指定的產品的所有類別?

非常感謝!

+0

你確定你想使用_many到many_關係?我會創建兩個表:''類'(帶'id')作爲主表和'產品'(帶'id'和'category_id')作爲細節表。你怎麼看? – 2017-06-15 17:46:14

+0

不完全是因爲我想在很多不同的類別中有一個產品,並且每個類別都可以有很多產品 –

回答

0

我會用not exists運營商這樣的:

SELECT c.`id`, c.`name` 
FROM `categories` c 
WHERE NOT EXISTS (SELECT * 
        FROM `product_to_category` ptc 
        WHERE c.`id` = ptc.`category_id` AND 
          ptc.`product_id` = 5) 
+1

謝謝!它對我來說工作得非常好! :) –

相關問題