2017-06-09 164 views
1

我需要編寫一個查詢,應該從桌子拉其他表的基礎上的數據我的專欄名稱也將取決於其他表SQL查詢其他表的where子句

讓的基礎上,選擇列說我有表A和B:

// Table A 
Type_id D1 D2 D3 
1 1 2 3 
2 12 11 14 
3 23 24 15 

// Table B 
Type_id DC1 DC2 
1 D2 D3 
2 D1 D3 
3 D3 D1 

查詢應該是這樣的:

select if(type_id=1 then D2,D3) if(type(type_2 then D1,D3) from A where type_id in (select type_id from B) order by if(type_id=1 then D2,D3) if(type(type_2 then D1,D3)

我無法修復type_id = 1,type_id = 2在選擇列名或按順序,因爲表有很多type_id,並且會增長。

所以結果應該是:

type_id,columns with respect to (DC1,DC2) 
1,2,3 
2,12,14 
3,15,23 
+0

編輯,以便該代碼是可讀的。您需要修復查詢的語法,但是 - 如果需要,我可以提供幫助。 –

+1

你沒有在所有這些平臺上運行 - 選擇你正在使用的那個將會給你一個答案是正確的**更快** – Hogan

+0

我以表格的形式寫出表格A和B以便清楚理解,但不知道爲什麼它在一條線上。 – khurram

回答

2

好像你想加入,一個case語句(或兩個)位置:

SELECT 
    A.Type_id, 
    CASE 
    WHEN B.DC1 = 'D1' THEN A.D1 
    WHEN B.DC1 = 'D2' THEN A.D2 
    WHEN B.DC1 = 'D3' THEN A.D3 
    ELSE 'You got problems' 
    END AS DC1, 
    CASE 
    WHEN B.DC2 = 'D1' THEN A.D1 
    WHEN B.DC2 = 'D2' THEN A.D2 
    WHEN B.DC2 = 'D3' THEN A.D3 
    ELSE 'You got problems' 
    END AS DC2 
FROM TABLE_A A 
JOIN TABLE_B B ON A.Type_id = B.Type_id 
+0

謝謝Hogan它解決了我的問題。 – khurram

+0

很高興聽到它@khurram,祝你好運! – Hogan