首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >连接两个表并获取结果

问连接两个表并获取结果
EN

Stack Overflow用户
提问于 2015-06-19 21:25:27
回答 2查看 26关注 0票数 0

我在连接两个mysql表时遇到了一些问题&得到我想要的结果。

我有两个表,用户表和乘法表。Users表具有id和name。时间表有user_id & minutesSpent。我想以name &time列作为结果集来获取所有用户的时间。但是对于某些特定日期,所有用户in都不在乘法表中。所以对于这样的用户,我需要空值。

我尝试了几次查询,但每次都只能在乘法表中获得user_ids的时间。未将其他user_id的时间设置为null :(

代码语言:javascript
复制
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`

我也尝试过此查询(&I)

代码语言:javascript
复制
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`

如果有人能帮我解决这个问题,那就太好了。谢谢

EN

回答 2

Stack Overflow用户

发布于 2015-06-19 21:28:34

您的WHERE子句正在将您的左连接转换为内连接。试试这个:

代码语言:javascript
复制
   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`
票数 2
EN

Stack Overflow用户

发布于 2015-06-19 22:00:54

顺便说一句,如果你想要更少的输入( 20个字符)和更好的性能,那么可以考虑以下几点:

代码语言:javascript
复制
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;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30939349

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档