| 网站首页 | 业界新闻 | 群组 | 人才 | 技术文章 | 下载频道 | 博客 | 代码贴 | 编程论坛
共有 63 人关注过本帖
标题:求助:多表关联,请高手指教,如何写SQL?
只看楼主 收藏
pargy
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2014-10-22
  问题点数:0  回复次数:2   
求助:多表关联,请高手指教,如何写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    赵六                足球    到人小去
7 天前 10:35
mywisdom88
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:65
帖 子:2157
专家分:5250
注 册:2015-3-25
  得分:0 
你的表结构,有点问题,你看下面的列子:
/*
-- 表1(学号 varchar(6),姓名 varchar(20),性别 varchar(2),年龄 int,班级 varchar(10))
create table #表1(学号 varchar(6),姓名 varchar(20),性别 varchar(2),年龄 int,班级 varchar(10))
insert into #表1
select 'a001','张三','男',25,'b001' union all
select 'a002','李四','女',24,'b002' union all
select 'a003','王五','男',23,'b003'

-- 表2(班级  varchar(10),学院  varchar(20))
create table #表2(班级  varchar(10),学院  varchar(20))
insert into #表2
select 'b001','计算机系2017' union all
select 'b002','数学应用2016' union all
select 'b003','文学考古2018'

-- 表3(学科  varchar(10),学号  varchar(6),分数 numeric(5,2))
create table #表3(学科  varchar(10),学号  varchar(6),分数 numeric(5,2))
insert into #表3
select '数学','a001',81 union all
select '数学','a002',82 union all
select '数学','a003',83 union all
select '语文','a001',91 union all
select '语文','a002',92 union all
select '语文','a003',93 union all
select '英语','a001',71 union all
select '英语','a003',73

*/
-- 查询成绩对应的学号,姓名,班级,学院
select a.学号,a.姓名,a.班级,b.学院,c.学科,c.分数
from #表3 as c
left join #表1 as a on a.学号=c.学号
left join #表2 as b on a.班级=b.班级
order by c.学号
6 天前 15:48
mywisdom88
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:65
帖 子:2157
专家分:5250
注 册:2015-3-25
  得分:0 
a001    张三    b001    计算机系2017    数学    81.00
a001    张三    b001    计算机系2017    语文    91.00
a001    张三    b001    计算机系2017    英语    71.00
a002    李四    b002    数学应用2016    语文    92.00
a002    李四    b002    数学应用2016    数学    82.00
a003    王五    b003    文学考古2018    数学    83.00
a003    王五    b003    文学考古2018    语文    93.00
a003    王五    b003    文学考古2018    英语    73.00
6 天前 15:48







关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.077469 second(s), 9 queries.
Copyright©2004-2018, BCCN.NET, All Rights Reserved