2014-03-19 34 views
1

是否有可能將LEFT JOIN兩列性質相同,即將t2.Namet3.Name併入T-SQL語句中的單列(數據屬性)NameLEFT JOIN曖昧列到SQL語句中的一列?

SELECT t1.ID, 
     t1.RowID, 
     t2.name, 
     t3.Name 
    FROM MasterTable T1 
     LEFT OUTER JOIN RightTable1 T2 
      ON T1.RowID = T2.ID 
     LEFT OUTER JOIN RightTable2 T3 
      ON T1.RowID = T3.ID 
WHERE t1.ID= " & ID & "; 

...還是我必須加載表爲單獨的數據集和編程加入他們(每...下一頁)到一個新的數據集?

問候,

Libor的

+0

你可以串連兩個字段爲一,不要忘記把ISNULL子句。我認爲你可以在兩個表之間串聯反正... –

+1

啊,我從來沒有做過,但我看到的答案波紋管的例子,謝謝。 –

回答

0
SELECT t1.ID, 
     t1.RowID, 
     t2.name + t3.Name AS JoinedName 
    FROM MasterTable T1 
     LEFT OUTER JOIN RightTable1 T2 
      ON T1.RowID = T2.ID 
     LEFT OUTER JOIN RightTable2 T3 
      ON T1.RowID = T3.ID 
WHERE t1.ID= " & ID & "; 
2

這取決於你的帽子的 「加盟」 的意思是 - 這裏有幾個可能性:

如果一個爲空,另一個是沒有,使用ISNULL

SELECT DISTINCT 
     t1.ID, 
     t1.RowID, 
     ISNULL(t2.name, t3.Name) Name 
FROM MasterTable T1 
LEFT OUTER JOIN RightTable1 T2 on T1.RowID = T2.ID 
LEFT OUTER JOIN RightTable2 T3 on T1.RowID = T3.ID 

如果你想將它們串聯:

SELECT DISTINCT 
     t1.ID, 
     t1.RowID, 
     t2.name + t3.Name Name 
FROM MasterTable T1 
LEFT OUTER JOIN RightTable1 T2 on T1.RowID = T2.ID 
LEFT OUTER JOIN RightTable2 T3 on T1.RowID = T3.ID 

如果你想兩行(一個UNION):

SELECT DISTINCT 
     t1.ID, 
     t1.RowID, 
     t2.Name 
FROM MasterTable T1 
LEFT OUTER JOIN RightTable1 T2 on T1.RowID = T2.ID 
UNION ALL 
SELECT DISTINCT 
     t1.ID, 
     t1.RowID, 
     t3.Name 
FROM MasterTable T1 
LEFT OUTER JOIN RightTable2 T3 on T1.RowID = T3.ID 

注意,DISTINCT是必要的,因爲除非你能T2和T3之間的關聯T2和T3你基本交叉聯接(笛卡爾積)所以您需要消除所創建的重複項。

+0

我在OP中看不到交叉連接。 –

+0

太棒了!在我的情況下,總是有一個值,只有一個表(有5個表加入!)。我會玩弄ISNULL來處理dbnull值。非常感謝您 –

+0

......也有我的情況下,沒有重複的,因爲該ID在該表5個,我加入獨特的,這意味着有常是隻有一個條目(某處5桌)相匹配的ID。 –