Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/59.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 从7个SQL行中选择第一个开始时间和最后一个结束时间,以仅显示1个SQL结果_Php_Mysql - Fatal编程技术网

Php 从7个SQL行中选择第一个开始时间和最后一个结束时间,以仅显示1个SQL结果

Php 从7个SQL行中选择第一个开始时间和最后一个结束时间,以仅显示1个SQL结果,php,mysql,Php,Mysql,我正在制作一个时间表提交/批准功能,目前正在处理pending.php页面,经理/管理员可以进入pending.php查看挂起的时间表以供查看 我现在的代码是: list($qh,$num) = dbQuery( "SELECT start_time, end_time, uid, submitid, submitstatus, submitdate, submitapprover FROM $TIMES_TABLE WHERE submitstatus=1 ORDER BY submit

我正在制作一个时间表提交/批准功能,目前正在处理pending.php页面,经理/管理员可以进入pending.php查看挂起的时间表以供查看

我现在的代码是:

list($qh,$num) = dbQuery(
"SELECT start_time, end_time, uid, submitid, submitstatus, submitdate, submitapprover 
FROM $TIMES_TABLE 
WHERE submitstatus=1 
ORDER BY submitid");
现在,它显示了该周的所有时间表条目:

我真正需要的是每周提交一行。基本上,抓住第一个开始时间和最后一个结束时间并将其组合在一起(开始-结束) (开始时间-结束时间|用户名| id |提交日期|提交状态..等)

有人告诉我使用group_catcon或其他什么,但我对此并不熟悉

从我的照片中,我想要类似这样的东西:

2012-12-30 - 2013-01-05 | admin | submitid#### | submitdate | status | approver
2013-01-06 - 2013-01-09 | admin | submitid#### | submitdate | status | approver

我对php/mysql还很陌生,因此我向您道歉,您可能会发现,在所有这些专栏中,它将事情划分得比您想要的更多。例如,有各种批准人。为此,您可能需要从查询中删除一些

select 
  concat(min(start_time), ' - ', max(end_time)), 
  uid, 
  submitid, 
  submitstatus, 
  submitdate, 
  submitapprover
FROM 
  $TIMES_TABLE
WHERE 
  submitstatus=1 
GROUP BY
  uid, 
  submitid, 
  submitstatus, 
  submitdate, 
  submitapprover
ORDER BY 
  submitid

你可能会发现,在所有这些专栏中,它把事情分割得比你想要的更多。例如,有各种批准人。为此,您可能需要从查询中删除一些

select 
  concat(min(start_time), ' - ', max(end_time)), 
  uid, 
  submitid, 
  submitstatus, 
  submitdate, 
  submitapprover
FROM 
  $TIMES_TABLE
WHERE 
  submitstatus=1 
GROUP BY
  uid, 
  submitid, 
  submitstatus, 
  submitdate, 
  submitapprover
ORDER BY 
  submitid

我用多种语言构建了许多时间表应用程序。您可以使用group_concat,它用逗号将字符串连接在一起,但我认为这不是您需要的

问题是,你必须将它与小组成员一起使用。从数据库结构来看,它可能不适合您

“分组依据”的规则是,您必须选择列的“分组依据”列表中使用的列,或者必须对该列使用聚合函数

在具有以下结构的books表上 售出图书(id、作者id、日期、价格) 您可以执行以下操作

select sum(price), author FROM books_sold group by author
以获得每个作者的图书总数

select sum(price), date FROM books_sold group by date
以获取每个日期售出的图书总数

select group_concat(id), date FROM books_sold group by date
获取每个日期售出的所有书籍的id。ID将用逗号分隔

但你不能做一件事

select group_concat(id), date, author FROM books_sold group by date
因为在“作者”列上,您没有执行分组方式或批量操作。查询正常,但“作者”列不可靠

现在从你的数据库结构来看,我不认为你可以做一个小组讨论,仍然可以得到你想要的领域。如果批准人在一周内不是同一个人会发生什么?您的“批准人”列没有意义。如果一周内的子项不相同,会发生什么?如果提交日期在整个星期内不相同,会发生什么情况

如果这些列始终相同,则可以执行以下操作:

select CONCAT(min(start_time), ' - ', max(end_time)), uid, submitid, submitstatus, submitdate, submitapprover FROM $TIMES_TABLE WHERE submitstatus=1 GROUP BY uid, submitid, submitstatus, submitdate, submitapprover ORDER BY submitid

我用多种语言构建了许多时间表应用程序。您可以使用group_concat,它用逗号将字符串连接在一起,但我认为这不是您需要的

问题是,你必须将它与小组成员一起使用。从数据库结构来看,它可能不适合您

“分组依据”的规则是,您必须选择列的“分组依据”列表中使用的列,或者必须对该列使用聚合函数

在具有以下结构的books表上 售出图书(id、作者id、日期、价格) 您可以执行以下操作

select sum(price), author FROM books_sold group by author
以获得每个作者的图书总数

select sum(price), date FROM books_sold group by date
以获取每个日期售出的图书总数

select group_concat(id), date FROM books_sold group by date
获取每个日期售出的所有书籍的id。ID将用逗号分隔

但你不能做一件事

select group_concat(id), date, author FROM books_sold group by date
因为在“作者”列上,您没有执行分组方式或批量操作。查询正常,但“作者”列不可靠

现在从你的数据库结构来看,我不认为你可以做一个小组讨论,仍然可以得到你想要的领域。如果批准人在一周内不是同一个人会发生什么?您的“批准人”列没有意义。如果一周内的子项不相同,会发生什么?如果提交日期在整个星期内不相同,会发生什么情况

如果这些列始终相同,则可以执行以下操作:

select CONCAT(min(start_time), ' - ', max(end_time)), uid, submitid, submitstatus, submitdate, submitapprover FROM $TIMES_TABLE WHERE submitstatus=1 GROUP BY uid, submitid, submitstatus, submitdate, submitapprover ORDER BY submitid

我认为这是可行的。。但现在我得到通知:未定义的索引:当试图在网站上显示开始时间时开始时间-结束时间无终止忘记添加为开始时间。。。。concat(最小(开始时间),“-”,最大(结束时间))作为开始时间谢谢这是一个巨大的帮助!伟大的请记住,单击旁边的略图复选标记,将您发现最有用的解决方案标记为已接受!我认为这是可行的。。但现在我得到通知:未定义的索引:当试图在网站上显示开始时间时开始时间-结束时间无终止忘记添加为开始时间。。。。concat(最小(开始时间),“-”,最大(结束时间))作为开始时间谢谢这是一个巨大的帮助!伟大的请记住,单击旁边的略图复选标记,将您发现最有用的解决方案标记为已接受!