gpt4 book ai didi

php - 打卡/打卡 使用 mysql 或 php 数组函数将多个用户的进入时间合并起来

转载 作者:行者123 更新时间:2023-11-29 20:29:31 28 4
gpt4 key购买 nike

我有一个用于上下类打卡系统的数据库表结构由time_id,user_id,weekNo,ClockYear,EntryDate,StartTime,EndTime和updated_at组成

基本上,startTime 是上类时间,EndTime 是下类时间,我想做的是运行查询来获取用户在特定日期总计的总工作时间,而不是每个单独条目的总工作时间。所以目前我有以下查询:

 SELECT CONCAT(users.first_name," ",users.last_name) AS theUser, 
time_logs.*, TIMEDIFF(endTime,startTime) AS totTime FROM time_logs
LEFT JOIN users ON time_logs.user_id = users.user_id WHERE
time_logs.entryDate >= "2016-08-17" AND time_logs.entryDate <= "2016-08-25" order by user_id ASC

返回的结果为

[0] => Array
(
[theUser] => Sam Johnson
[timeId] => 14
[user_id] => 1
[weekNo] => 34
[clockYear] => 2016
[entryDate] => 2016-08-23
[startTime] => 2016-08-23 16:16:30
[endTime] => 2016-08-23 17:36:14
[updated_at] => 2016-08-23 17:36:14
[totTime] => 01:19:44
)

[1] => Array
(
[theUser] => Sam Johnson
[timeId] => 15
[user_id] => 1
[weekNo] => 34
[clockYear] => 2016
[entryDate] => 2016-08-24
[startTime] => 2016-08-24 01:00:00
[endTime] => 2016-08-24 05:15:00
[updated_at] =>
[totTime] => 04:15:00
)

[3] => Array
(
[theUser] => Bob Doe
[timeId] => 19
[user_id] => 2
[weekNo] => 34
[clockYear] => 2016
[entryDate] => 2016-08-24
[startTime] => 2016-08-24 10:00:00
[endTime] => 2016-08-24 13:15:00
[updated_at] =>
[totTime] => 03:15:00
)

正如您所看到的,它给出了该特定条目的总时间,但我想要得到的只是每个用户的一个条目,以及该用户当天所有条目的总时间总计,因此对于用户 1

[0] => Array
(
[theUser] => Sam Johnson
[user_id] => 1
[weekNo] => 34
[clockYear] => 2016
[entryDate] => 2016-08-23
[totTime] => 05:34:44
)

任何人都可以帮忙解决这个问题吗?不确定我是否可以使用查询来做到这一点

最佳答案

你就快到了!
假设 totTime 是时间字段(不是日期时间字段)并且我希望 user_id 是唯一的
抱歉,我写了 XXX,因为我不想花时间把这个完整地写出来

选择CONCAT(XXX)theUser,user_id,min(weekNo)weekNo,min(clockYear)clockYear,min(entryDate)entryDate,sum(TIMEDIFF(endTime,startTime))totTime FROM XXX ORDER BY user_id GROUP BY user_id

这应该会给你你想要的。关键是你没有的 GROUP BY 。如果您想显示的话,可以将 MIN 命令更改为 MAX。

theUser 将从最后一个条目中选取,我相信,user_id 应该保持不变,其他字段将由 GROUP BY 计算,我必须在 sum 和 min 函数上重复字段名称,因为 sum 和 min 返回一个唯一的字段名

关于php - 打卡/打卡 使用 mysql 或 php 数组函数将多个用户的进入时间合并起来,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39150798/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com