Mysql 一对多只返回一个结果
我有三张桌子 表1: 产品标识 名称 描述 表2: 类别识别码 名称 描述 表3: 产品标识 类别识别码 我正在尝试创建一个查询,以选择包含以下数据的表:产品名称、产品描述、产品类别 问题是每一行应该包含多个product_类别,但查询只返回一个 这是问题,如果你能告诉我什么部分是错误的Mysql 一对多只返回一个结果,mysql,sql,Mysql,Sql,我有三张桌子 表1: 产品标识 名称 描述 表2: 类别识别码 名称 描述 表3: 产品标识 类别识别码 我正在尝试创建一个查询,以选择包含以下数据的表:产品名称、产品描述、产品类别 问题是每一行应该包含多个product_类别,但查询只返回一个 这是问题,如果你能告诉我什么部分是错误的 SELECT table1.name AS product_name, table1.description AS product_description, table2.name
SELECT table1.name AS product_name,
table1.description AS product_description,
table2.name AS product_category
FROM table1 INNER JOIN
table3
ON table3.product_id = table1.product_id INNER JOIN
table2
ON table2.category_id = table3.category_id;
我得到的结果是:
product_name - product_description - product_category
NAME 1 - Description 1 - Category 1
NAME 2 - Description 2 - Category 2
我的目标是这样的:
product_name - product_description - product_category
NAME 1 - Description 1 - Category 1
Category 2
Category 5
NAME 2 - Description 2 - Category 7
Category 2
Category 1
如果您希望在一行中包含多个产品类别,请考虑“聚合”:
我已经找到了答案,所有的功劳都归于@Gordon Linoff,因为我所需要做的就是将产品id添加到分组中 问题是:
SELECT t1.name AS product_name,
t1.description AS product_description,
GROUP_CONCAT(t2.name) AS product_category
FROM table1 t1 INNER JOIN
table3 t3
ON t3.product_id = t1.product_id INNER JOIN
table2 t2
ON t2.category_id = t3.category_id
GROUP BY t1.product_id, t1.name, t1.description;
谢谢 非常感谢,我想这已经离我很近了,但是它仍然返回一个table3.name,尽管它应该返回更多,如description@jukerok . . . 你的评论毫无意义<代码>表3没有名为
名称
的列。我不好,我是说表2。name@jukerok . . . 返回的表2.name
值的数量基于表3
中的内容。查询中没有任何内容(内部联接除外)过滤掉值。
SELECT t1.name AS product_name,
t1.description AS product_description,
GROUP_CONCAT(t2.name) AS product_category
FROM table1 t1 INNER JOIN
table3 t3
ON t3.product_id = t1.product_id INNER JOIN
table2 t2
ON t2.category_id = t3.category_id
GROUP BY t1.product_id, t1.name, t1.description;