请教一个SQL查询语句写法。。BANJI 表为班级 字段:ID , NIANJI_ID(年级ID) , NAME
NIANJI 表为年级 字段:ID , XUEXIAO_ID(学校ID) , NAME
XUEXIAO 表为学校 字段: ID , NAMESTU表为学生总表 字段 :ID , LZ_TYPE(有三个值的可能BNAJI_ID,NIANJI_ID,XUEXIAO_ID) , LZ_ID(与LZ_TYPE对应,填写年级ID,学校ID或地区ID的值) , NAME现希望查询所有学生表及其地区
即D.* , XUEXIAO.ID不知道我表达清楚没有,希望高手指点。
NIANJI 表为年级 字段:ID , XUEXIAO_ID(学校ID) , NAME
XUEXIAO 表为学校 字段: ID , NAMESTU表为学生总表 字段 :ID , LZ_TYPE(有三个值的可能BNAJI_ID,NIANJI_ID,XUEXIAO_ID) , LZ_ID(与LZ_TYPE对应,填写年级ID,学校ID或地区ID的值) , NAME现希望查询所有学生表及其地区
即D.* , XUEXIAO.ID不知道我表达清楚没有,希望高手指点。
union
select id , decode('NIANJI_TYPE',LZ_ID,'XXXX') from STU left join ...
union
select id , decode('XUEXIAO_TYPE',LZ_ID,'XXXX') from STU left join ...1. XXXX 要是一个不会出现的特别的ID
2. Left join 部分就是by 相应的ID 去找 地区
select STU.id , decode(LZ_TYPE,'BANJI_TYPE',LZ_ID,'XXXX'), XUEXIAO.name from STU left join ...
union
select STU.id , decode(LZ_TYPE,'NIANJI_TYPE',LZ_ID,'XXXX'), XUEXIAO.name from STU left join ...
union
select STU.id , decode(LZ_TYPE,'XUEXIAO_TYPE',LZ_ID,'XXXX'), XUEXIAO.name from STU left join ...1. XXXX 要是一个不会出现的特别的ID
2. Left join 部分就是by 相应的ID 去找 XUEXIAO.name
---------- ----------
1 一中
2 二中SQL> SELECT * FROM nianji; ID XUEXIAO_ID NAME
---------- ---------- ----------
11 1 一中一年级
12 1 一中二年级
21 2 二中一年级
22 2 二中二年级SQL> SELECT * FROM banji; ID NIANJI_ID NAME
---------- ---------- ----------
111 11 1中1年1班
112 11 1中1年2班
121 12 1中2年1班
122 12 1中2年2班
211 21 2中1年1班
212 21 2中1年2班
221 22 2中2年1班
222 22 2中2年2班已选择8行。SQL> SELECT s.*, x.name
2 FROM stu s, xuexiao x
3 WHERE s.lz_type = 'XUEXIAO_ID'
4 AND s.lz_id = x.id
5 UNION ALL
6 SELECT s.*, x.name
7 FROM stu s, xuexiao x, nianji n
8 WHERE s.lz_type = 'NIANJI_ID'
9 AND s.lz_id = n.id
10 AND n.xuexiao_id = x.id
11 UNION ALL
12 SELECT s.*, x.name
13 FROM stu s, xuexiao x, nianji n, banji b
14 WHERE s.lz_type = 'BANJI_ID'
15 AND s.lz_id = b.id
16 AND b.nianji_id = n.id
17 AND n.xuexiao_id = x.id;ID LZ_TYPE LZ_ID NAME NAME
---------- -------------------- ---------- ---------- ----------
001 XUEXIAO_ID 1 张三 一中
002 NIANJI_ID 11 李四 一中
003 NIANJI_ID 22 王五 二中
004 BANJI_ID 111 刘七 一中
005 BANJI_ID 222 陈八 二中SQL>