SQL 如果不指定 join 方式,依條件會做 CrossJoin,也就是A表的所有紀錄{乘於}B表的所有紀錄,如果要達到一對一的輸出,請指定 Inner Join
方式一:
SELECT a.qqq,a.ww,,b.rrr,b.zzz,c.ttt,c.yyy,c.uuu,d.ooo,d.III,e.aaa,e.sss
FROM [a] a,[b] b,[c] c,[d] d,[e] e
where a.aid=b.bid and b.bid =c.cid and c.cid=d.did d.did=e.eid
方式二:
SELECT a.qqq,a.ww,,b.rrr,b.zzz,c.ttt,c.yyy,c.uuu,d.ooo,d.III,e.aaa,e.sss
FROM [a] a Inner Join [b] b on a.aid=b.bid
inner join [c] c on b.bid =c.cid
inner join [d] d on c.cid=d.did
inner join [e] e on d.did=e.eid
感謝i80091的回覆,但我遇到另一個問題
若在A資料對應B資料表,但我需取B資料表的另二個欄位的值我要如何分別取出
A資料表 B資料表 要如何取值變成
A B C A B C A B C
1 AA 1 -1 -3 1 AA CC
2 BB 2 -2 2 BB
3 CC 3 -3 3 CC
4 DD 4 -1 -4 4 AA DD
A資料表
A B C
1 AA
2 BB
3 CC
4 DD
B資料表
A B C
1 -1 -3
2 -2
3 -3
4 -1 -4
要如何取值變成
A B C
1 AA CC
2 BB
3 CC
4 AA DD
感謝您
對不起,這麼晚才回答你!
我不太理解您的問題,你是指要將 B 表的內容改用 A 表的值來替代嗎?看你第二份說明,好像是 B表的 -1 就用 表的 AA, -2 就用 A表的BB, ...來代替嗎?
如果是這樣,就不能只用join 方式,而是要用多重 Select
Select B.A, (Select B From A,B Where A.A=ABS(B.B)) B, (Select B From A, B Where A.A=ABS(B.C)) C From B