Php 从7个SQL行中选择第一个开始时间和最后一个结束时间,以仅显示1个SQL结果
我正在制作一个时间表提交/批准功能,目前正在处理pending.php页面,经理/管理员可以进入pending.php查看挂起的时间表以供查看 我现在的代码是: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
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(最小(开始时间),“-”,最大(结束时间))作为开始时间谢谢这是一个巨大的帮助!伟大的请记住,单击旁边的略图复选标记,将您发现最有用的解决方案标记为已接受!