[英]Mysql query LEFT JOIN unexpected result
帶有左聯接的mysql SELECT查詢未產生我期望的結果。 我希望有人可以向我展示或指向正確的方向,
我正在嘗試建立一個查詢,在該查詢中我從“用戶”表中獲取所有用戶名,並從主表中獲取他們在特定日期花費的所有時間的總和。 我使用了左聯接,但沒有得到預期的結果。
SUM(m.time_spent) as sum_total_time
FROM master as m
LEFT OUTER JOIN users as u ON u.user_id = m.user_id
WHERE m.date_created >= '2016-05-09'
AND m.date_created <= '2016-05-13'
GROUP BY name
ORDER BY name
主表
master_id user_id time_spent date_created
1 1 40 2016-05-01
2 2 36 2016-05-02
3 3 56 2016-05-03
4 2 33 2016-05-03
5 1 32 2016-05-05
nth nth nth number nth date
用戶表
user_id first_name last_name
1 James Green
2 Robert Cox
3 Andy Roger
etc etc etc
我希望輸出結果應如下所示:
user_id Name sum_total_time
1 James Green 62
2 Robert Cox 69
3 Andy Roger 56
4 Brian Harper 0
5 Angel Lee 0
6 Andrew Martin 55
.....
.....
Nth Name Nth value
您必須直接從主表中選擇數據,按用戶分組並計算總和。 然后,您可以將此結果與用戶表結合起來以獲取有關該用戶的所有信息。
可能是日期轉換問題。
SUM(m.time_spent) as sum_total_time
FROM master as m
LEFT OUTER JOIN users as u ON u.user_id = m.user_id
WHERE m.date_created >=STR_TO_DATE( '2016-05-09', '%Y-%m-%d)
和/或您也有不完整的sql
SUM(m.time_spent) as sum_total_time
FROM master as m
LEFT OUTER JOIN users as u ON u.user_id = m.user_id
WHERE m.date_created >= '2016-05-09'
AND m.date_created // this condition don't match with nothing..
// could be you forgot a part
更新1
如果您希望用戶總數
select u.id, u.name, SUM(m.time_spent) as sum_total_time
FROM master as m
Inner JOIN users as u ON u.user_id = m.user_id
WHERE m.date_created >=STR_TO_DATE( '2016-05-09', '%Y-%m-%d)
AND m.date_created <= =STR_TO_DATE('2016-05-13'', '%Y-%m-%d)
Group by u.id
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.