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. 自学,刚编了helloworld就失败了2. python3.x - mongodb 显示不出中文,都是方块,该如何解决?3. javascript - jquery对象被定义成jquery变量后,怎么使用:gt这个(可能表达有问题)4. 为啥最大化个窗口还得找一堆理由?5. 请问PHPstudy中的数据库如何创建索引6. javascript - 在react中写行间样式的whiteSpace不生效7. javascript - 怎么获取一个页面中的所数据,然后弄成一个json格式的字符串传给后台8. html5 - chrome下的a标签download属性无法调出另存为的下载框9. android - 微信这个效果是怎么实现的10. javascript - 求助一个关于indexedDB的问题

网公网安备