2015-06-19 124 views
0

我遇到一些麻煩連接兩個MySQL表&得到的結果,因爲我想要的。加入兩個表和得到的結果

我有兩個表,用戶表&次表。用戶表有ID爲&的名稱。時間表有user_id &分鐘。我想爲名爲&次列的所有用戶獲取時間作爲結果集。但是對於某些特定日期,所有用戶標識都不在時間表中。所以我需要這些用戶的空值。

我嘗試了好幾種查詢,但每次我只在次表中可用user_ids越來越倍。沒有得到其他的user_id的時間爲空:(

SELECT `users`.`name`,SUM(`times`.`minutesSpent`) AS `Total` 
FROM `users` 
LEFT OUTER JOIN `times` ON `users`.`id` = `times`.`user_id` 
WHERE DATE(`date`) = '2015-06-03' 
GROUP BY `users`.`name` 

&我已經試過此查詢以及

SELECT `users`.`name`,SUM(`times`.`minutesSpent`) AS `Total` ,CASE WHEN times.user_id IS NULL THEN 0 ELSE 1 END 
FROM `users` 
INNER JOIN `times` ON `users`.`id` = `times`.`user_id` AND `users`.`isTimeEnable` = 0 
WHERE DATE(`date`) = '2015-06-03' 
GROUP BY `users`.`name` 

如果任何一個幫助我,這將是巨大的。 感謝

回答

2

您的WHERE子句將您的左連接變爲內連接。試試這個:

SELECT `users`.`name`,SUM(`times`.`minutesSpent`) AS `Total` 
    FROM `users` 
    LEFT OUTER JOIN `times` ON `users`.`id` = `times`.`user_id` 
     AND DATE(`date`) = '2015-06-03' 
    GROUP BY `users`.`name` 
+0

哇!它的工作原理,非常感謝 –

0

順便說一句,如果少打字(以及20個字符)和更好的性能是你的事,然後考慮以下問題:

SELECT u.name 
    , SUM(t.minutesSpent) Total 
    FROM users u 
    LEFT 
    JOIN times t 
    ON u.id = t.user_id 
    AND t.date BETWEEN '2015-06-03 00:00:00' AND '2015-06-03 23:59:59' 
GROUP 
    BY u.name;