Mysql 一对多只返回一个结果

Mysql 一对多只返回一个结果,mysql,sql,Mysql,Sql,我有三张桌子 表1: 产品标识 名称 描述 表2: 类别识别码 名称 描述 表3: 产品标识 类别识别码 我正在尝试创建一个查询,以选择包含以下数据的表:产品名称、产品描述、产品类别 问题是每一行应该包含多个product_类别,但查询只返回一个 这是问题,如果你能告诉我什么部分是错误的 SELECT table1.name AS product_name, table1.description AS product_description, table2.name

我有三张桌子

表1: 产品标识 名称 描述

表2: 类别识别码 名称 描述

表3: 产品标识 类别识别码

我正在尝试创建一个查询,以选择包含以下数据的表:产品名称、产品描述、产品类别

问题是每一行应该包含多个product_类别,但查询只返回一个

这是问题,如果你能告诉我什么部分是错误的

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;