MySQL查询可在许多表格的一个字段中显示多个值

时间:2019-01-17 03:19:06

标签: mysql

我有桌子:

TRUCKING_JOB:trucking_iddriver

Data: 
1, Jonah
2, Jim
3, Ron

机器:machine_idmachine_name

Data:
1, Machine1
2, Machine2
3, Machine3

TRUCKING_MACHINE:trucking_idmachine_id

Data:
1, 1
1, 2
1, 3
2, 1
2, 2
3, 1
3, 3

我的问题是,如何使用单个查询字符串获取此查询结果

trucking_id,驱动程序,机器名称

例如:

1, Jonah, (Machine1, Machine2, Machine3)

第三列结合了所有计算机。

感谢您的帮助和建议。

2 个答案:

答案 0 :(得分:1)

您正在寻找的是“ GROUP BY”,它具有一些特殊功能,例如“ GROUP_CONCAT”。

SELECT 
  TRUCKING_JOB.trucking_id, 
  TRUCKING_JOB.driver, 
  GROUP_CONCAT(MACHINES.machine_name SEPARATOR ','
FROM TRUCKING_MACHINE
JOIN TRUCKING_JOB ON TRUCKING_MACHINE.trucking_id = TRUCKING_JOB.trucking_id
JOIN MACHINES ON TRUCKING_MACHINE.machine_id = MACHINES.machine_id
GROUP BY TRUCKING_JOB.trucking_id

您可以在GROUP BY之前添加任何WHERE子句语句。

答案 1 :(得分:0)

谢谢。这是我基于@Eugene推荐查询的最终查询字符串。

SELECT 
  TRUCKING_JOB.trucking_id AS TRUCKING_ID, 
  TRUCKING_JOB.driver AS DRIVER, 
  GROUP_CONCAT(MACHINES.machine_name SEPARATOR ', ') AS MACHINES
FROM TRUCKING_MACHINE
JOIN TRUCKING_JOB ON TRUCKING_MACHINE.trucking_id = TRUCKING_JOB.trucking_id
JOIN MACHINES ON TRUCKING_MACHINE.machine_id = MACHINES.machine_id
GROUP BY TRUCKING_JOB.trucking_id