我的架构的一部分如图
所示我有两个联结表,其中一个将项目映射到类别,第二个联系表映射了哪些项目是"特色"对于特定类别。
我现在需要做的是获取特定类别中的所有项目(并不困难),但我还需要一个专栏"特色"如果该项目是该类别的特色,则会显示(如果没有特色,则显示为NULL)。
我尝试过LEFT JOIN的各种组合,例如
SELECT i.*, category.name, category_feat_item.item_id AS featured
FROM item AS i
INNER JOIN item_category ON i.id = item_category.item_id
INNER JOIN category ON category.id = item_category.category_id AND category.id =1
LEFT OUTER JOIN category_feat_item ON i.id = category_feat_item.item_id
ORDER BY featured DESC
但是我很难过。
答案 0 :(得分:1)
看起来几乎没问题,但你需要在左外连接中分配category_id。否则,您将获得该项目的所有特色项目:
SELECT i.*, category.name, category_feat_item.item_id AS featured
FROM item AS i
INNER JOIN item_category ON i.id = item_category.item_id
INNER JOIN category ON category.id = item_category.category_id AND category.id =1
LEFT OUTER JOIN category_feat_item ON i.id = category_feat_item.item_id AND category_feat_item.category_id = 1
ORDER BY featured DESC