2010-07-05 101 views
1

我有三個表。產品,產品類別和產品類別鏈接。鏈接表在那裏,因爲產品可以在多個類別中。用於獲取所有產品類別和產品是否在其中的SQL查詢

我想要實現的是所有類別的列表,其中包含一個附加字段,該字段指出是否針對該特定產品ID,如果該產品在該類別中。

SELECT *, l.product_id as checked FROM `ProductCategories` LEFT JOIN ProductCategoriesLink l ON l.category_id = ProductCategories.id WHERE (l.product_id = 1) AND (ProductCategories.id > 0) GROUP BY ProductCategories.id ; 

然而此刻,這僅檢索該產品是在類別。

理解任何建議。

+1

我並不熱衷於使用'l'作爲標識符 - 它看起來很像'1',這使得它很難閱讀。考慮使用一個標識符,比如說'link'。 – Hammerite 2010-07-05 12:39:50

回答

1
SELECT 
    ProductCategories.*, 
    l.product_id IS NOT NULL AS ProductInCategory 
FROM 
    ProductCategories 
    LEFT JOIN ProductCategoriesLink AS l ON 
     ProductCategories.id = l.category_id AND 
     l.product_id = 1 

這使得使用的,當執行LEFT JOIN,至少一行將返回在左側表的每一行的事實。如果右側表格中沒有匹配的行,則該表格中的列全部爲NULL

+0

太棒了,非常感謝! – babadbee 2010-07-05 13:21:52

相關問題