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

标签 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

但我很难过。

最佳答案

看起来几乎没问题,但您还需要在左外连接中分配 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/

相关文章:

mysql:内部查询在 selectif 语句中不起作用

sql - MySQL:需要脚本帮助

Mysql Left Join with Sum Criteria

sql - MySQL查询计数问题

ios - 核心数据中的触发器

使用来自不同表的 SELECT SUM 的 MySQL UPDATE

Mysql - 左连接所有表

mysql - MySQL在Y类型最新插入数据之前查询X类型最新插入数据

php - 获取打印表中的外键值

mysql - 使用 MySQL 和组联系人的数据透视表