我正在创建一个预订日记,需要在预订日记上显示客户信息,预订状态和描述。数据库就像
id | BookingRef | CusotmerName | Status | InDate | InTime | BookingDate | Details |
我想按时间升序显示信息,但需要在日期上对它进行分组。 例如,如果记录是
id | BookingRef | CusotmerName | Status | InDate | InTime | BookingDate | Details |
--------------------------------------------------------------------------------------
1 | 4656AB | John Smith | Open | 17-03-2019 | 08:30 | 16-03-2019 14:30 | Want to check my glasses
2 | 4554AB | Rick Ronald | Open | 17-03-2019 |08:55 | 16-03-2019 14:30 | Want to check my glasses
3 | 4434AB | Serra Willa | Open | 17-03-2019 |10:05 | 16-03-2019 14:30 | Want to check my glasses
4 | 4954AB | Jay Banker | Open | 18-03-2019 |09:25 | 16-03-2019 14:30 | Want to check my glasses
5 | 4154AB | Damien Baker | Open | 19-03-2019 |11:55 | 16-03-2019 14:30 | Want to check my glasses
这些数据应显示为
17-03-2019
John Smith | 08:30 | Want to check my glasses | Open
Rick Ronald |08:55 | Want to check my glasses | Open
Serra Willa |10:05 | Want to check my glasses | Open
18-03-2019
Jay Banker | 09:25 | Want to check my glasses | Open
19-03-2019
Damien Baker |11:55 | Want to check my glasses | Open
我的查询会提取数据,但是我需要将其与InDate分组,所以我使用了:
select *
from appointments ASC InDate;
这会产生以下错误:
select *
from appointments
GROUP BY InDate;
错误:
mysqli_query():(42000/1055):SELECT列表的表达式#1不在 GROUP BY子句,包含非聚合列 'appdb.appointments.id'在功能上不依赖于列 在GROUP BY子句中;这与 sql_mode = only_full_group_by
有什么建议,我如何才能实现自己想要的结果?
答案 0 :(得分:0)
这个评论太长了。
SQL结果集(如SQL表)由列和行组成。 每一行都有相同的列集。这是使用SQL时非常重要的原则。
您想要的结果集似乎具有两种类型的行。一个带有单个日期,另一个带有一堆列。像这样结构化,您无法使用SQL返回它。它完全超出了语言功能的范围。说,就像使用Python清洁浴室一样。
通过将每一行转换为单个字符串或将日期放在CustomerName
列中并将其余各列留空,可以实现。但是,这些确实是骇客。获得所需格式的数据的更好方法是在应用程序层进行处理。