mysql - 多表关联查询的实现方法?
本文介绍了mysql - 多表关联查询的实现方法?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
问 题
Table A
LogID UserId Date
00001 0001 05-01
00002 0002 05-02
00003 0003 05-02
00004 0004 05-02
00005 0003 05-03
00006 0001 05-03
00007 0002 05-03
Table B
UserId Status
0001 Active
0002 Active
0003 Active
0004 Inactive
Table C
UserId Province
0001 Yunnan
0002 Fujian
0003 Fujian
0004 Beijing
以上为数据库中的三张表,通过UserID关联。表A为用户登录信息表以LogID为主键;表B储存用户活跃状态,表C储存用户地理位置信息。现在想根据表A中的日期分组得到其他状态的数目累加和,预期返回结果为:
Date Active Inactive Yunnan Fujian Beijing
05-01 1 0 1 0 0
05-02 2 1 0 2 1
05-03 3 0 1 2 0
能否用一条SQL语句实现?
解决方案
这表业务逻辑非常不严密,我也就不严密的给你写一个了,就当你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;
这篇关于mysql - 多表关联查询的实现方法?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文