[英]mysql request using join and group_concat
I have three tables "names", "groups", "tasks" 我有三个表“名称”,“组”,“任务”
"names" “名”
| nid | name |
| 1 | John |
| 2 | Jim |
| 3 | Jerry |
"groups" “组”
| gid | nid |
| 1 | 1 |
| 1 | 2 |
| 2 | 2 |
| 2 | 3 |
"tasks" “任务”
| tid | gid |
| 1 | 2 |
| 2 | 1 |
I want to get a list of names, that belong to a task, like this: 我想获得一个名称列表,该名称属于一个任务,如下所示:
| tid | names |
| 1 | Jim,Jerry |
| 2 | John,Jim |
I successfully tried: 我成功尝试了:
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
This works so far, but the names are in single outputs so I tried to use GROUP_CONCAT()
, but this does not work. 到目前为止,该方法仍然有效,但是名称位于单个输出中,因此我尝试使用GROUP_CONCAT()
,但这不起作用。 I just get the first task with the wrong names!?!? 我只是用错误的名字完成了第一个任务!?!?
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
I have never used GROUP_CONCAT()
before. 我以前从未使用过GROUP_CONCAT()
。 It works well, when using it in a single SELECT
without joins. 当在没有连接的单个SELECT
使用它时,它工作得很好。 A short explanation what I did wrong, would be nice. 一个简短的解释,我做错了,会很好。
When using group_concat
you need to group your results. 使用group_concat
您需要将结果分组。
Add group by t.id
at the end of your query. 在查询末尾添加group by t.id
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.