Mysql 多个左联接影响了我的求和(TIMESTAMPDIFF)计算
我目前正在尝试创建一份报告,报告我的PHPBB3论坛上的一些个人上周总共登记的时间。最初,我有以下查询,如预期所示:Mysql 多个左联接影响了我的求和(TIMESTAMPDIFF)计算,mysql,sql,left-join,Mysql,Sql,Left Join,我目前正在尝试创建一份报告,报告我的PHPBB3论坛上的一些个人上周总共登记的时间。最初,我有以下查询,如预期所示: 选择forum_users.username,SUM(TIMESTAMPDIFF(秒,schedule_slots.time_start,schedule_slots.time_finishing))作为秒 来自论坛用户 左联接明细表\u插槽 在论坛上\u users.user\u id=schedule\u slots.user\u id 并计划\u slots.time\u
选择forum_users.username,SUM(TIMESTAMPDIFF(秒,schedule_slots.time_start,schedule_slots.time_finishing))作为秒
来自论坛用户
左联接明细表\u插槽
在论坛上\u users.user\u id=schedule\u slots.user\u id
并计划\u slots.time\u start>=(CURDATE()-间隔1周)
而明细表_slots.is _del=0
和明细表_slots.channel=0
其中(forum_users.group_id=8或forum_users.group_id=5或forum_users.group_id=14)
按论坛用户分组。用户名
按上级排序(论坛用户.用户名)
但是,当我加入另一个表时,时间戳差异最终被错误地计算(它更高),下面是我更新的非工作语句:
选择forum_users.username,SUM(TIMESTAMPDIFF(秒,schedule_slots.time_Start,schedule_slots.time_finishing))作为秒,group_concat(不同的forum_user_group.group_id)作为用户组
来自论坛用户
左联接明细表\u插槽
在论坛上\u users.user\u id=schedule\u slots.user\u id
并计划\u slots.time\u start>=(CURDATE()-间隔1周)
而明细表_slots.is _del=0
和明细表_slots.channel=0
左加入论坛用户组
在论坛用户组上。用户id=论坛用户。用户id
其中(forum_users.group_id=8或forum_users.group_id=5或forum_users.group_id=14或forum_users.group_id=12)
按论坛用户分组。用户名
按上级排序(论坛用户.用户名)
我对此一无所知,非常感谢您的帮助。时间戳差异的计算是正确的,但您可以将其乘以用户所在的组数 我会尝试:
SELECT forum_users.username, SUM(TIMESTAMPDIFF(SECOND, schedule_slots.time_starting, schedule_slots.time_finishing)) AS seconds,
(select group_concat(DISTINCT group_id) from forum_user_group WHERE forum_user_group.user_id = forum_users.user_id) AS user_groups
FROM forum_users
LEFT JOIN schedule_slots
ON forum_users.user_id = schedule_slots.user_id
AND schedule_slots.time_starting >= (CURDATE() - INTERVAL 1 WEEK)
AND schedule_slots.is_del = 0
AND schedule_slots.channel = 0
WHERE (forum_users.group_id = 8 OR forum_users.group_id = 5 OR forum_users.group_id = 14 OR forum_users.group_id = 12)
GROUP BY forum_users.username, user_groups
ORDER BY upper(forum_users.username)