SQL Query用于获取所有产品类别以及产品是否在其中

时间:2010-07-05 12:20:54

标签: sql mysql

我有三张桌子。产品,产品类别和产品类别链接。链接表就在那里,因为产品可以在多个类别中。

我想要实现的是一个包含附加字段的所有类别的列表,该字段说明该特定产品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 个答案:

答案 0 :(得分: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