2011-03-05 47 views
1

我有三個表格,tbA,tbB & tbC,帶2列。我想通過中期合併三個表,並將它們組合,併產生這樣的格式化輸出...表合併來自三個表格的數據

中旬,mAreaA,mAreaB,mAreaC


結構 TBA

中旬,mAreaA


結構表 TBB

MID,mAreaB


表的結構 TBC

MID,mAreaC


我的數據被如下

表TBA
1,1.83
2,3.65
4,9.30

表TBB 1,6.15
3,5.40

表TBC
1,0.55


我需要的輸出是這樣的...

中旬,mAreaA,mAreaB,mAreaC
1,1.83,6.15,0.55
2,3.65,0,0
3 ,0,5.40,0
4,9.30,0,0

回答

1

你需要做的,是有從每個表中的所有ID的來源,所以你可以LEFT JOIN反對。這將確保每個ID都被考慮到,並且來自每個表的'丟失'mId在輸出中被表示爲空mArea。

SELECT 
    merged.id as mID, 
    a.mAreaA, 
    b.mAreaB, 
    c.mAreaC 
FROM 
    (SELECT mid as id FROM tba 
    UNION 
    SELECT mid as id FROM tbb 
    UNION 
    SELECT mid as id FROM tbc) merged 
LEFT JOIN tbA a ON merged.id = a.mid 
LEFT JOIN tbB b ON merged.id = b.mid 
LEFT JOIN tbC c ON merged.id = c.mid 

可能有一定更好的方法來做到這一點,但你正在使用的數據庫產品,你沒有解釋,並且架構似乎相當非正統。如果你必須經常這樣做,我會擔心的。另外,如果找不到mAreaX的值,則返回值中將顯示NULL。如果你需要它是非空的,則​​3210爲空字符串。

相關問題