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. java - .jsp页面用<%= %>的方式获取数据存在一个很奇怪的问题2. 一道使用算法解决的java题(关于hashmap的问题)3. javascript - requestAnimationFrame如何控制帧速?4. javascript - react 中绑定事件和阻止事件冒泡5. javascript - 百度链接尾部的这个参数是干嘛的?6. javascript - vue组件中使用百度分享初次加载失败?7. mysql索引的疑问8. 老师,请问下为什么这个地方的单引号里面的变量能够被解析呢?9. node.js - Nodejs微信开发,视频上传成功,但是不返回给用户10. 热切期待朱老师的回复,网页视频在线播放器插件配置错误

网公网安备