问题描述
- oracle 实现多表关联SQL脚本
-
A表:
XH IDA NAME AGE
1 1 张三 20
2 2 李四 18
3 3 王五 19
4 4 lily 19B表
XH IDB IDA
1 1 1
2 2 1
3 3 1
4 4 3
5 5 3
6 6 4
7 7 4C表
XH IDC IDB
1 1 1
2 1 2
3 1 3
4 2 6
5 2 7A表的IDA与B表的IDA有关系,B表的IDB与C表的IDB有关系
实现效果:
XH IDA NAME AGE IDB IDC
1 1 张三 20 1,2,3 1
2 2 李四 183 3 王五 19 4,5
4 4 lily 19 6,7 2
解决方案
select XH IDA NAME AGE from A jon B on A.IDA = B.IDA AND B.IDB in (select IDB from C)
解决方案二:
SELECT T.*, C.IDC FROM (
SELECT XH, IDA, NAME, AGE, IDB FROM A, B
WHERE A.IDA = B.IDB(+)
) T, C
WHERE T.IDB = C.IDB(+)
外层左关联我不太确定。
解决方案三:
外连接我不太熟,但知道要实现这个查询肯定要用oracle的 列转行 函数 wm_concat
解决方案四:
外连接我不太熟,但知道要实现这个查询肯定要用oracle的 列转行 函数 wm_concat
解决方案五:
wm_concat可以实现
解决方案六:
先确保IDB在表B是唯一的 同样IDA在表A是唯一的
SELECT
A.XH, A.IDA,A.NAME,A.AGE,B.IDB,C.IDC
FROM C
LEFT OUTER JOIN B
ON C.IDB = B.IDB
LEFT OUTER JOIN A
ON B.IDA = A.IDA