对来自3个sql表的数据进行分组

yi0zb3m4  于 2021-07-26  发布在  Java
关注(0)|答案(3)|浏览(280)

我想匹配一些sql条目,并将它们分组,如下所示:
工人表

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可以吗?尝试了一些结合,但没有运气。

l7mqbcuq

l7mqbcuq1#

我将把查询写成:

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;

我的回答有以下原因
当被问到这个问题时,不需要外连接。
显示有意义的表别名的示例,这些别名是表名的缩写。
提供由所属表限定的所有列的答案。

wbgh16ku

wbgh16ku2#

尝试使用group\u concat()-我假设您的工具表worker\u id为工具\u 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
ut6juiuv

ut6juiuv3#

select w2.worker,group_concat(t.tool separator ',') tool
from   workers_tools_usage w1 
left join worker w2 
on   w1.worker_id=w2.id
inner join tools_table t 
on w1.tool_id=t.tool_id
group by w2.worker

相关问题