使用join和group_concat的mysql请求

使用join和group_concat的mysql请求,mysql,join,group-concat,Mysql,Join,Group Concat,我有三个表“名称”、“组”、“任务” “姓名” “组” “任务” 我想得到一个属于某个任务的名称列表,如下所示: | tid | names | | 1 | Jim,Jerry | | 2 | John,Jim | 我成功地尝试了: SELECT t.tid,n.name FROM tasks t LEFT JOIN groups g ON g.gid=t.gid LEFT JOIN names n ON n.nid=g.nid 到目前为止,这是可行的,但是名称

我有三个表“名称”、“组”、“任务”

“姓名”

“组”

“任务”

我想得到一个属于某个任务的名称列表,如下所示:

| tid | names     |
|  1  | Jim,Jerry |
|  2  | John,Jim  |
我成功地尝试了:

SELECT t.tid,n.name
FROM tasks t
   LEFT JOIN groups g ON g.gid=t.gid
   LEFT JOIN names n ON n.nid=g.nid
到目前为止,这是可行的,但是名称在单个输出中,所以我尝试使用
GROUP_CONCAT()
,但这不起作用。我刚得到的第一个任务的名字不对

SELECT t.tid,GROUP_CONCAT(n.name)
FROM tasks t
   LEFT JOIN groups g ON g.gid=t.gid
   LEFT JOIN names n ON n.nid=g.nid

我以前从未使用过
GROUP\u CONCAT()
。当在单个
SELECT
中使用它时,它工作得很好。一个简短的解释我做错了什么就好了。

使用
group\u concat
时,您需要对结果进行分组


在查询末尾添加
按t.id分组

在查询末尾添加
按t.tid分组
| tid | names     |
|  1  | Jim,Jerry |
|  2  | John,Jim  |
SELECT t.tid,n.name
FROM tasks t
   LEFT JOIN groups g ON g.gid=t.gid
   LEFT JOIN names n ON n.nid=g.nid
SELECT t.tid,GROUP_CONCAT(n.name)
FROM tasks t
   LEFT JOIN groups g ON g.gid=t.gid
   LEFT JOIN names n ON n.nid=g.nid