合并来自两个不同联结表的数据

时间:2015-05-23 09:30:49

标签: mysql sql join

我的架构的一部分如图Category, Items

所示

我有两个联结表,其中一个将项目映射到类别,第二个联系表映射了哪些项目是"特色"对于特定类别。

我现在需要做的是获取特定类别中的所有项目(并不困难),但我还需要一个专栏"特色"如果该项目是该类别的特色,则会显示(如果没有特色,则显示为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

但是我很难过。

1 个答案:

答案 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