Mysql 对3个SQL表中的数据进行分组
我想匹配一些sql条目,并将它们分组,如下图所示: 工人表Mysql 对3个SQL表中的数据进行分组,mysql,sql,Mysql,Sql,我想匹配一些sql条目,并将它们分组,如下图所示: 工人表 ID | worker ------+-------------- 1 | Smith 2 | John 3 | Luke 工人、工具和使用 worker_id | tool_id -------------+---------- 1 | 1 1 | 2 1 | 3 3
ID | worker
------+--------------
1 | Smith
2 | John
3 | Luke
工人、工具和使用
worker_id | tool_id
-------------+----------
1 | 1
1 | 2
1 | 3
3 | 1
工具表
tool_id | name
-------------+----------
1 | hammer
2 | wrenches
3 | drill
4 | screwdriver
我想要的匹配应该是这样的:
worker | tool
-------------+----------
Smith | hammer,wrenches,drill
Luke | hammer
使用Mysql可以做到这一点吗?尝试了一些联合,但没有成功。尝试使用组_concat()-我假定您的工具表工作人员id为工具id
select worker,group_concat(tool)
from workers_tools_usage w1 left join worker w2 on w1.worker_id=w2.id
left join tools_table t on w1.tool_id=t.tool_id
group by worker
我将把查询写为:
select w.id, w.worker, group_concat(t.tool)
from worker w join
workers_tools_usage wtu
on wtu.worker_id = w.id join
tools t
on t.tool_id = wtu.tool_id
group by w.worker w.id;
我的回答有以下原因
- 如有疑问,不需要外部联接
- 显示有意义的表别名示例,这些别名是表名的缩写
- 为所有列提供答案,这些列由它们所属的表限定
分组依据
和选择
。您实际上不必选择它,否则您将无法区分这两行之间的差异。
select w.id, w.worker, group_concat(t.tool)
from worker w join
workers_tools_usage wtu
on wtu.worker_id = w.id join
tools t
on t.tool_id = wtu.tool_id
group by w.worker w.id;