我的部分架构如图所示
我有两个联结表,其中一个将项目映射到类别,第二个映射特定类别的“特色”项目。
我现在需要做的是获取属于特定类别的所有 项目(并不难),但我还需要有一个“特色”列,如果该项目是特色商品,它就会显示对于该类别(如果没有特色,则为 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
但我很难过。
最佳答案
看起来几乎没问题,但您还需要在左外连接中分配 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
关于mysql - 合并来自两个不同联结表的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30411088/