簡體   English   中英

MySQL查詢LEFT JOIN意外結果

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM