首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >两个表的MySQL

两个表的MySQL
EN

Stack Overflow用户
提问于 2014-04-04 07:50:48
回答 1查看 32关注 0票数 0

我有两张这样的桌子

PERSON

代码语言:javascript
复制
|NAME        |AGE       |
+------------+----------+
|mark        |20        |
|david       |18        |
|john        |35        |
|mary        |29        |
|sophie      |32        |

LOG

代码语言:javascript
复制
|NAME        |ACTION      |TIME_STAMP            |
+------------+------------+----------------------+
|mark        |LOGIN       |2010-10-10 00:20:00   |
|mark        |LOGIN       |2010-10-10 00:25:00   |
|mark        |LOGIN       |2010-10-10 00:30:00   |
|mark        |LOGIN       |2010-10-10 00:35:00   |
|david       |LOGIN       |2010-10-10 00:30:00   |
|david       |LOGIN       |2010-10-10 00:35:00   |

想要这个

代码语言:javascript
复制
|NAME        |AGE       |TOTAL ACTIONS |TOTAL TIME CONECTED |
+------------+----------+--------------+--------------------+
|mark        |20        |4             |00:15:00            |
|david       |18        |2             |00:05:00            |
|john        |35        |0             |00:00:00            | Or null
|mary        |29        |0             |00:00:00            | or null 
|sophie      |32        |0             |00:00:00            | or null

实际上,我有这个SQL,但是它没有显示第一个表中还没有登录的人。

代码语言:javascript
复制
SELECT person.name, person.age, COUNT(DISTINCT log.time_stamp), SEC_TO_TIME(MAX(TIME_TO_SEC(time_stamp))- MIN(TIME_TO_SEC(time_stamp)))
FROM person, log
WHERE log.name = person.name
GROUP BY person.name;
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-04-04 07:56:44

试着使用:

代码语言:javascript
复制
SELECT person.name, person.age, COUNT(DISTINCT log.time_stamp), 
       SEC_TO_TIME(MAX(TIME_TO_SEC(time_stamp))- MIN(TIME_TO_SEC(time_stamp)))
       FROM person
       LEFT JOIN log ON person.name = log.name
       GROUP BY person.name;
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22856718

复制
相关文章

相似问题

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