求助:多表关联,请高手指教,如何写SQL?(重点是要把没有缴费的人名,也要列举出来)

pargy 发布于 2018/01/10 11:12
阅读 90
收藏 1

求助:多表关联,请高手指教,如何写SQL?(重点是要把没有缴费的人名,也要列举出来)

原表是ABCD四张表            
A表              
学号 姓名 性质 分组        
A001 张三 气球 一组        
A005 李四 足球 一组        
A002 王五 足球 一组        
A003 赵六 足球 二组        
A004 张七 气球 二组        
               
B表              
分组 地址            
一组 学校A区            
二组 到人小去            
               
C表              
缴费情况 分组 学号          
JF001 一组 A001          
JF002 一组 A002          
JF003 二组 A004          
               
D表              
缴费情况 学号 型号 金额        
JF001 A001 QQ-A 5        
JF001 A001 QQ-B 8        
JF001 A001 QQ-C 10        
JF002 A002 ZQ-A 25        
JF002 A002 ZQ-B 30        
JF002 A002 ZQ-C 50        
JF003 A004 QQ-B 16        
JF003 A004 QQ-C 30        
               
需要通过SQL,得到结果表          
分组 学号 姓名 缴费情况 型号 金额 性质 地址
一组 A001 张三 JF001 QQ-A 5 气球 学校A区
一组 A001 张三 JF001 QQ-B 8 气球 学校A区
一组 A001 张三 JF001 QQ-C 10 气球 学校A区
一组 A002 王五 JF002 ZQ-A 25 足球 学校A区
一组 A002 王五 JF002 ZQ-B 30 足球 学校A区
一组 A002 王五 JF002 ZQ-C 50 足球 学校A区
一组 A005 李四       足球 学校A区
二组 A004 张七 JF003 QQ-B 16 气球 到人小去
二组 A004 张七 JF003 QQ-C 30 气球 到人小去
二组 A003 赵六       足球 到人小去
               

 

加载中
0
tqyin
tqyin

SELECT
  *
FROM
  (SELECT
    * a.分组,
    a.学号,
    a.姓名,
    '缴费情况',
    '型号',
    '金额',
    a.性质,
    b.地址
  FROM
    a
    LEFT JOIN b
      ON a.分组 = b.分组
  WHERE a.学号 NOT IN
    (SELECT
      c.学号
    FROM
      c)
    UNION
    SELECT
      a.分组,
      a.学号,
      a.姓名,
      d.缴费情况,
      d.型号,
      d.金额,
      a.性质,
      b.地址
    FROM
      a
      LEFT JOIN b
        ON a.分组 = b.分组
      LEFT JOIN c
        ON a.学号 = c.学号
      RIGHT JOIN d
        ON a.学号 = d.学号) ORDER BY 分组

p
pargy
回复 @tqyin : 哎呀!高手啊!谢谢您!我咋没有想到把 没有缴费的人员单独筛选出来 union all 进去呢? 太感谢了,谢谢老师!
tqyin
tqyin
回复 @pargy : 修改了SQL再看看
p
pargy
您这个SQL,还是出不来没有缴费的人员姓名那两行。 我刚才测试了一下,谢谢您!
返回顶部
顶部