簡體   English   中英

加入兩個表並獲得結果

[英]Joined two tables & get results

我在加入兩個mysql表並獲得所需的結果時遇到了一些麻煩。

我有兩個表,用戶表和時間表。 用戶表具有ID和名稱。 時間表有user_id和minutesSpent。 我想使用名稱和時間列作為結果集獲取所有用戶的時間。 但是對於某些特定日期,所有用戶ID均不在時間表中。 因此,我需要針對此類用戶使用null值。

我已經嘗試了幾次查詢,但是每次我只獲取times表中可用的user_ids的時間。 沒有獲得其他user_id的時間為null :(

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`

如果有人幫助我,那就太好了。 謝謝

您的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`

順便說一句,如果您打字少(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;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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