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 - CSS图片轮播显示问题2. android - java tm platform se binary 占用很多内存3. javascript - 项目用IE浏览器打开修改前端内容,后台数据修改了,但是前端页面内容不变,用谷歌浏览器测试前端页面可以刷新,求大神解决。4. Java中的多人游戏。将客户端(玩家)连接到其他客户端创建的游戏5. mysql 怎么做到update只更新一行数据?6. thinkPHP5中获取数据库数据后默认选中下拉框的值,传递到后台消失不见。有图有代码,希望有人帮忙7. javascript - 关于js高级程序中的问题8. python - Mac 安装 MySQLdb时 报错,所有过程都按照网上说的做的,还是报错,求大神帮助9. 现在大家是用Mysql还是mariaDb?10. datetime - Python如何获取当前时间

网公网安备