2013-04-10 16 views
0

我目前正在嘗試創建一個報表,總計有一些個人在我的PHPBB3論壇上的時間總數已經預訂了,最後一週。下面的查詢和預期一樣:多個左連接已影響到我的SUM(TIMESTAMPDIFF計算

SELECT forum_users.username, SUM(TIMESTAMPDIFF(SECOND, schedule_slots.time_starting, schedule_slots.time_finishing)) AS seconds 
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) 
GROUP BY forum_users.username 
ORDER BY upper(forum_users.username) 

然而,當我去參加另一個表,時間戳差異最終被錯誤地計算(這是更高),這是我的新的非工作聲明:

SELECT forum_users.username, SUM(TIMESTAMPDIFF(SECOND, schedule_slots.time_starting, schedule_slots.time_finishing)) AS seconds, group_concat(DISTINCT forum_user_group.group_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 
LEFT JOIN forum_user_group 
    ON forum_user_group.user_id = forum_users.user_id 
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 
ORDER BY upper(forum_users.username) 

我在這一張上畫了一張空白,非常感謝你的幫助。

回答

0

時間戳差值的權利,但您可以通過組,用戶可以在數乘以

我會嘗試:

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) 
+0

完美工作,非常感謝! – 2013-04-10 15:49:20