2015年6月28日 星期日

SQL練習:JOIN & Sub-Query (2)

PTT DataBase版 JOIN問題#1Hcvzw_T

手中有三個表格,分別叫 A, B, C

其中資料是

A:                                   B:                            C:
NAME_ID  Name        AGE_ID    AGE      NAME_ID   AGE_ID
N1            Air            A2           20           N2               A2
N2            Daisy        A3           30

想合併三個表格變成輸出:

NAME_ID  NAME     AGE_ID    AGE
N1            Air        NULL       NULL
N2            Daisy     A2             20
NULL         NULL    A3             30


 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
--建立測試資料表
CREATE TABLE TA
	(
	NAME_ID nchar(10) NULL,
	NAME nchar(10) NULL
	)  ON [PRIMARY]
	
	insert into TA (NAME_ID,NAME) values ('N1','Air')
	insert into TA (NAME_ID,NAME) values ('N2','Daisy')

CREATE TABLE TB
	(
	AGE_ID nchar(10) NULL,
	AGE INT NULL
	)  ON [PRIMARY]
	
	insert into TB (AGE_ID,AGE) values ('A2',20)
	insert into TB (AGE_ID,AGE) values ('A3',30)

CREATE TABLE TC
	(
	NAME_ID nchar(10) NULL,
	AGE_ID nchar(10) NULL
	)  ON [PRIMARY]
	
	insert into TC (NAME_ID,AGE_ID) values ('N2','A2')

解法

TA和TC完全外部合併為 A,再將A和TB再次外部合併為 B

1
2
3
select TA.*,B.*
from (TA full outer join TC AS A ON TA.NAME_ID=A.NAME_ID)	--TA和TC兩個表先外部合併 AS A
	 full outer join TB AS B ON A.AGE_ID=B.AGE_ID		--A和TB兩個表在外部合併 AS B

沒有留言:

張貼留言