一、连接两个查询结果
left join 是left outer join的简写,left join可以连接2个查询结果集。我们通常的用法
SELECT
S.STUDENT_NAME STUDENT_NAME, S.STUDENT_NO STUDENT_NO, F.ADDRESS ADDRESS
FROM(
SELECT
G.GRADE_NO GRADE_NO, A.ADDRESS
FROM
GRADE G, ADDRESS A
WHERE
G.GRADE_NO = A.GRADE_NO
) F LEFT JOIN STUDENT S ON F.STUDENT_NO = S.STUDENT_NO
这是我们最常见的用法,基本上这种连接都能满足一般的查询需求。这里还要说明
一下,LEFT JOIN是先连接,后过滤。也就是说,在WHERE条件过滤之前,已经进行了连
接。假如我们现在有这样一种场景,我们需要连接STUDENT表中的所有2016届的学生,
而不是连接STUDENT表中所有的记录。那么我们就需要在连接之前查询出来所有2016届
的学生。这种场景,left join也能轻松搞定。如下:
SELECT
P.STUDENT_NAME STUDENT_NAME, P.STUDENT_NO STUDENT_NO, F.ADDRESS ADDRESS
FROM(
SELECT
G.GRADE_NO GRADE_NO, A.ADDRESS
FROM
GRADE G, ADDRESS A
WHERE
G.GRADE_NO = A.GRADE_NO
) F LEFT JOIN
(
SELECT
S.STUDENT_NO STUDENT_NO, S.STUDENT_NAME STUDENT_NAME
FROM
STUDENT S
WHERE
S.YEAR = '2016'
)P ON P.STUDENT_NO = F.STUDENT_NO
————————————————
版权声明:本文为CSDN博主「春秋战国程序猿」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/reggergdsg/article/details/66475187
二、连接多个查询结果
项目中遇到这样的问题,需要按指定的时间区间从10个数据库表中查询到关于10个司法局的业务数量,案件数量等11列信息。再对这些结果排序。
那么我们怎么通过一个SQL语句来解决呢?
下面介绍下SQL方法:
select
a.*,
a.id,
b.id,
c.price
from author a
left join book b on a.id=b.id
left join order c on a.id=c.id
使用Left join -on语句将3张表链接到了一起。对于项目的解决办法,可以将book,order,auther替换成sql语句,即select出来的表,再做一次left join
SQL语句如下
1 select
2 a.MEDIATIONCOMMITTEE,
3 a.tiaojieaj,
4 b.shangbaosl,
5 c.paichafk,
6 d.zixunrz,
7 e.chunjufw,
8 f.faxuanhd
9 from (select MEDIATIONCOMMITTEE,count(1) as tiaojieaj from MBM_CASE where DATEACCEPTED <= to_date('2018-05-10 00:00:00','yyyy-mm-dd hh24:mi:ss') group by MEDIATIONCOMMITTEE) a
10 left join (select MEDIATIONCOMMITTEE,count(1) as shangbaosl from MCS_MEDIATIONCASE where REPORTDATE between to_date('2016-01-10 00:00:00','yyyy-mm-dd hh24:mi:ss') and to_date
('2018-05-10 00:00:00','yyyy-mm-dd hh24:mi:ss') and STATUS !='ToBeReported' group by MEDIATIONCOMMITTEE) b
11 on a.MEDIATIONCOMMITTEE=b.MEDIATIONCOMMITTEE
12 left join (select MEDIATIONCOMMITTEE,count(1) as paichafk from CDS_INVESTIGATIONFEEDBAC where DATE_ between to_date('2016-01-10 00:00:00','yyyy-mm-dd hh24:mi:ss') and to_date
('2018-05-10 00:00:00','yyyy-mm-dd hh24:mi:ss') group by MEDIATIONCOMMITTEE) c
13 on a.MEDIATIONCOMMITTEE=c.MEDIATIONCOMMITTEE
14 left join (select MEDIATIONCOMMITTEE,count(1) as zixunrz from AMS_VILLAGESERVICELOG where CREATEDATE between to_date('2016-01-10 00:00:00','yyyy-mm-dd hh24:mi:ss') and to_date
('2018-05-10 00:00:00','yyyy-mm-dd hh24:mi:ss') group by MEDIATIONCOMMITTEE ) d
15 on a.MEDIATIONCOMMITTEE=d.MEDIATIONCOMMITTEE
16 left join (select MEDIATIONCOMMITTEE,count(1) as chunjufw from WWS_CONSULT where DATE_ between to_date('2016-01-10 00:00:00','yyyy-mm-dd hh24:mi:ss') and to_date
('2018-05-10 00:00:00','yyyy-mm-dd hh24:mi:ss') group by MEDIATIONCOMMITTEE ) e
17 on a.MEDIATIONCOMMITTEE=e.MEDIATIONCOMMITTEE
18 left join (select MEDIATIONCOMMITTEE,count(1) as faxuanhd from WWS_LEGALACTIVITY where STARTDATE between to_date('2016-01-10 00:00:00','yyyy-mm-dd hh24:mi:ss')
and to_date('2018-05-10 00:00:00','yyyy-mm-dd hh24:mi:ss') group by MEDIATIONCOMMITTEE) f
19 on a.MEDIATIONCOMMITTEE=f.MEDIATIONCOMMITTEE
————————————————
版权声明:本文为CSDN博主「adam-liu」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_41664845/article/details/80763112