2013-10-22 115 views
0

在我的表1,它可以有,並已在地址欄空項對應的記錄或沒有在表2中 匹配的條目,我要提供的所有記錄在表1中還列出了表2中的相應條目。我的結果是我試圖實現的。返回所有記錄,而不管是否有匹配

Table 1   
ID First Last  
1 John Smith 
2 Bob  Long  
3 Bill Davis 
4 Sam  Bird  
5 Tom  Fenton 
6 Mary Willis 

Table 2   
RefID ID Address 
1  1 123 Main  
2  2 555 Center 
3  3 626 Smith 
4  4 412 Walnut 
5  1  
6  2 555 Center 
7  3  
8  4 412 Walnut 

Result   
Id First Last Address 
1 John Smith 123 Main 
2 Bob  Long 555 Center 
3 Bill Davis 626 Smith 
4 Sam  Bird 412 Walnut 
5 Tom  Fenton 
6 Mary Willis 
+0

你如何加入你的兩張桌子?我從你的例子結果中推斷出Table1中的RefId是Table1中Id的外鍵?如果是這種情況,那麼@ Nicholai的答案將起作用。 Table2中的Id列是指什麼? –

回答

1

你需要一個外連接此:

SELECT * FROM Table1 t1 LEFT OUTER JOIN Table2 t2 ON t1.ID = t2.RefID 
+0

沒有爲我工作。如果我的表1有100條記錄,我的結果應該只返回100條記錄。 –

+0

我的答案中的字段不是加入的正確字段嗎?請編輯問題以顯示您一直在使用的查詢,並描述您的表關係。 – Nicholai

+0

你沒有包括從表2中的地址部分,其中我被需要它來從表1對應於以下關係ID字段,如果它存在。我沒有查詢作爲基礎,因爲我的嘗試根本不起作用。如果我的問題不夠明確,我很抱歉。 –

1

你怎麼加入這兩個表的?如果表2有超過1個匹配的地址,您希望如何顯示它們?請澄清你的問題。

這是基於我的假設查詢。

SELECT 
    ID, First, Last, 
    Address = (SELECT MAX(Address) FROM Table2 t2 WHERE t1.ID = t2.ID) 
FROM Table1 t1 
+0

我只是想與心不是空的實際條目以顯示從表2中的匹配地址,而且還包括從表1中的所有條目,所以如果他們的心不是匹配該記錄將顯示在地址部分空。我只是測試你的代碼,它似乎工作。 –

相關問題