如何在MySQL中添加上述数据集的标题

如何在MySQL中添加上述数据集的标题,mysql,mariadb,Mysql,Mariadb,标题可能是一个错误的词,但如果我有一个工作班次表和一个客户表,我会试图找出如何在客户之间选择一行显示客户信息 [轮班表] 班次号、客户号、日期 [轮班需要工人] id、shift\u id、people\u id(nullable=true) [客户] 客户id、客户名称 客户可以有多个班次,班次可以有多个工人 我想运行一个SELECT语句,它可以输出 Customer A Shift 1, Worker 1 Shift 1, Worker 2 Shift 2, Worker 1 Shift 2

标题可能是一个错误的词,但如果我有一个工作班次表和一个客户表,我会试图找出如何在客户之间选择一行显示客户信息

[轮班表] 班次号、客户号、日期

[轮班需要工人] id、shift\u id、people\u id(nullable=true)

[客户] 客户id、客户名称

客户可以有多个班次,班次可以有多个工人 我想运行一个SELECT语句,它可以输出

Customer A
Shift 1, Worker 1
Shift 1, Worker 2
Shift 2, Worker 1
Shift 2, Worker 2
Shift 2, Worker 3
Customer B
Shift 1, Worker 1
Shift 2, Worker 2
etc
我查看了rollup,但这似乎需要一些分组依据,而我正好相反,我想要所有的行,然后是一个额外的行。我查看了联合,但看起来它是一个附加查询或多个单独的查询,我想在“客户机ID”改变的查询中间“结合”。
任何可能有帮助的帮助或其他链接都非常棒。

您可以使用jasper reports构建报告。您将为客户创建一个主报告,并为班次信息创建一个子报告

如果您想在一条语句中完成它,首先必须生成这样的结构

CustomerA, null, null, 0
CustomerA, Shift1, Worker1, 1
CustomerA, Shift1, Worker2, 1
CustomerB, null, null, 0
最后一列是信息的级别。 在拥有此结构之后,可以使用联合和联接轻松生成此结构 您可以使用case或if-then-else生成输出列

case levelNr when 0 then customer_name else concat(shift_id, ' ', worker_id) end 

这在应用程序编程语言中做得更好,而不是在数据库中。@Barmar,你对报表生成器有什么建议吗?我可以指向我们的MySQL服务器,让我们的开发团队以外的人来编写这些报表?我同意你的观点,我已经用PHP和straight sql构建了很多报表,但我需要为公司提供更多的可扩展性。不,对不起,我所有的开发都使用PHP,而不是报表生成器。谢谢!!我只是看着贾斯珀,觉得这绝对是我想要的方式。对于OP问题,我正在与要使用的特定联接和联合进行斗争。我不确定如何在每个客户之间获得包含“null,null,0”部分的结构化数据。是否有一个mysql foreach方法我不知道如何使用union语句。