2014-01-23 145 views
0

我有兩張桌子X和Yi桌子X有兩個彩色,分別是A和B以及桌子Y的彩色C. 現在我想加入X和Y使用左加入開啓條件 Xa = yc或Xb = yc我想獲取表Y中'c'coloumn的行,分別對應於表X中'a'coloumn的行和表Y中'c'cOLOUMN的行,以及表X中B'coloumn的各行。左兩張桌子加入

結果應該是這樣的:

----------------------- 
X.a Y.C   X.B  Y.C 
1  1   5   5 
2  2   10  10 
3  3   20  20 
NULL  NULL  NULL  NULL 
+0

告訴我你有什麼這麼遠嗎? – zee

+0

從mt_cmn_order選擇o.FKYS_COMBO_ID,o.FKYS_MOP1,o.FKYS_MOP2,i.KYS_ID,i.BOL_HARD_COPY_CLAIM,pa.FKYS_COMBO_IDö 左加入cmn_insurance我上(o.FKYS_MOP1 = i.KYS_ID或o.FKYS_MOP2 = i.KYS_ID ) – user3159660

+0

你的問題是什麼?顯示你的數據。顯示您的查詢。顯示你的不法性結果。創建一個sqlfiddle。 – HerrSerker

回答

0

你可以簡單地這樣做

SELECT x.a, y1.c ac, x.b, y2.c bc 
    FROM x 
    LEFT JOIN y y1 ON x.a = y1.c 
    LEFT JOIN y y2 ON x.b = y2.c 

輸出示例:

 
|  A |  AC |  B |  BC | 
|--------|--------|--------|--------| 
|  1 |  1 |  5 |  5 | 
|  2 |  2 |  10 |  10 | 
|  3 |  3 |  20 |  20 | 
| (null) | (null) | (null) | (null) | 

這裏是演示

+0

它完美的作品,因爲我需要.thanq – user3159660

0
SELECT X.a, X.b, Y.c 
FROM X LEFT JOIN Y 
ON X.a = Y.c OR X.b = Y.c 

哪裏是你的問題?

問題不知道sql語法嗎?否則,你很可能不會制定您的問題聲明正確


基於您的評論,我與你想知道哪些比賽是被檢索和修改後的查詢值的假設會是:

SELECT X.a, X.b, Y.c, 
CASE WHEN (X.a = Y.c AND X.b != Y.c) THEN 'a' 
WHEN (X.a != Y.c AND X.b = Y.c) THEN 'b' 
WHEN (X.a = Y.c AND X.b = Y.c) THEN 'ab' END AS 'FromColumn' 
FROM X LEFT JOIN Y 
ON X.a = Y.c OR X.b = Y.c 
+0

我想在結果中分別爲相應的X.a和X.b值設置兩個y.c列 – user3159660

+0

對我來說這沒有意義,值將始終相同。另外,如果最終處理表中的內容可以說.net,那麼當您使用列名稱引用單元格值時,具有相同名稱的兩列將會產生問題。你有什麼機會想知道這個值是爲a還是b檢索的? –

+0

是的,我完全需要那 – user3159660