2013-07-08 48 views
0

我有一個表(Table1),其中一些列通過id引用另一個表(Table2)。它看起來是這樣的:編寫一個查詢來計算出SQL中不存在的父ID

表1

ID Column 1 Column 2 Column 3 
3   15   16   0 
4   19   0   0 
5   21   22   23 
6   0   0   0 
7   25   26   0 
8   27   0   0 

表2

ID String 
15  data 
16  data 
19  data 
21  data 

我試圖寫一個返回結果這樣的查詢:

Table2ID Table1ID 
     15   3 
     16   3 
     19   4 
     21   5 
     22   5 
     23   5 
     25   7 

等等。

表2中沒有提及任何父類,所以我試圖找出查詢這個最好的方法。任何幫助都非常有用,因爲我的SQL體驗價值不到兩週。

回答

1

您可以使用union(或union all)來組合多個查詢的結果。爲了做到這一點,您必須遵循一些規則。首先,每個查詢必須返回相同數量的列。接下來,每列不一定需要返回相同的數據類型,但如果它們是不同的數據類型,您可能會收到意想不到的錯誤,所以如果每個查詢爲每列返回相同的數據類型,那麼您會更好。

要清楚的是,當您有多個列時,每個查詢應爲第一列返回相同的數據類型,並且每個查詢應爲第二列返回相同的數據類型,但第一列的數據類型不需要匹配第二列的數據類型。

Select Column1 As Table2ID, ID As Table1ID From Table1 
Union All 
Select Column2, ID From Table1 
Union All 
Select Column3, ID From Table1 
+0

太棒了!完美的作品!謝謝! – MickeyD

0
SELECT Table2ID,t1.ID 
FROM Table2 t2 
JOIN Table1 t1 
    ON t2.Table1ID=t1.Col1 OR t2.Table1ID=t1.Col2 OR t2.Table1ID=t1.Col3