我有三个表。产品、产品类别和产品类别链接。链接表在那里,因为一种产品可以属于多个类别。
我想要实现的是所有类别的列表,其中包含一个附加字段,该字段说明是否针对该特定产品 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 ;
但是目前,这只会检索产品所属的类别。
感谢任何建议。
最佳答案
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
。
关于SQL查询以获取所有产品类别以及产品是否在其中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3179404/