mysql - 多表关联查询的实现方法?
问题描述
Table ALogID UserId Date00001 0001 05-0100002 0002 05-0200003 0003 05-0200004 0004 05-0200005 0003 05-0300006 0001 05-03 00007 0002 05-03Table BUserId Status0001 Active0002 Active 0003 Active0004 InactiveTable CUserId Province0001 Yunnan0002 Fujian 0003 Fujian0004 Beijing
以上为数据库中的三张表,通过UserID关联。表A为用户登录信息表以LogID为主键;表B储存用户活跃状态,表C储存用户地理位置信息。现在想根据表A中的日期分组得到其他状态的数目累加和,预期返回结果为:
Date Active Inactive Yunnan Fujian Beijing05-01 1 0 1 0 0 05-02 2 1 0 2 1 05-03 3 0 1 2 0
能否用一条SQL语句实现?
问题解答
回答1:这表业务逻辑非常不严密,我也就不严密的给你写一个了,就当你ABC表关系为多对一对一:
select a.date, sum(case when b.status=’Active’ then 1 else 0 end) ’Active’, sum(case when b.status=’Inactive’ then 1 else 0 end) ’Inactive’, sum(case when c.province =’Yunnan’ then 1 else 0 end) ’Yunnan’, sum(case when c.province =’Fujian’ then 1 else 0 end) ’Fujian’, sum(case when c.province =’Beijing’ then 1 else 0 end) ’Beijing’ from a left join b on a.userid=b.user_id join c on a.user_id=c.user_id group by a.date order by a.date;
相关文章:
1. javascript - js一个call和apply的问题?2. 老师,请问我打开browsersync出现这个问题怎么解决啊?3. docker不显示端口映射呢?4. mysql - 数据库为什么需要锁机制?5. javascript - 给某个类添加一个伪类,这个类有click事件,现在我点击伪类也触发了click事件6. android - 类似这样的recyclerview滑动效果7. java - ssm整合 表现层访问时报错。。8. node.js - JavaScript的一个不能理解的地方9. docker镜像push报错10. python - xpath提取网页路径没问题,但是缺失内容?
