2013-07-31 60 views
1

我正在嘗試使用下面的查詢連接兩個表Table1和Table2。我想要Table1中的所有列(和行)和Table2中的'BasedOnDate'列。 問題是,'BasedOnDate'列中的所有值在左連接後設置爲1,而不是在兩個表中都匹配的行上(如表1中的行1和表2中的第1行)。 ?左加入SQL查詢-MS Access

SELECT Table1.*, Table2.BasedOnDate 
FROM Table1 LEFT JOIN Table2 ON (Table1.Name = Table2.Name) AND 
(Table1.[Date-4] = Table2.[Date-4]) AND 
(Table1.[Date-3] = Table2.[Date-3]) AND 
(Table1.[Date-2]= Table2.[Date-2]) AND 
(Table1.[Date-1] = Table2.[Date-1]) AND 
(Table1.ID = Table2.ID) AND 
(Table1.Site = Table2.Site); 



Table2: 

Site ID  Date-1 Date-2  Date-3  Date-4 Name  BasedOnDate 
00001 201 3/30/2011 4/6/2011 4/3/2011 4/6/2011 Name-1   1 


Table1: 

Site ID  Date-1 Date-2  Date-3  Date-4 Name  
00001 201 3/30/2011 4/6/2011 4/3/2011 4/6/2011 Name-1 
00001 101 5/21/2011 5/28/2011 5/21/2011 5/28/2011 Name-2 
+0

「Table2.Date-4」應該是日期減四或是您的列'Date-4'的名稱。在後者的情況下,您需要將這些列放在括號內的表格[Date-4]' – Brad

+0

您確定您沒有where子句嗎?你能否在問題中包含實際結果? –

+0

我對此陳述感到困惑:「在'BasedOnDate'列中的所有值在左連接之後被設置爲1,因爲樣本數據中的值是1? –

回答

1

當我重新創建你的情況我可以證實,使用正確的語法查詢工作:retreives的Table1所有列再加上加入了問題所在

查詢我使用的是現在評論Table2BasedOnDate。如果沒有匹配,查詢返回nullBasedOnDate

SITE ID  DATE1   DATE2   DATE3   DATE4   NAME BASEDONDATE 
1 201 March, 30 2011 April, 06 2011 April, 03 2011 April, 06 2011 Name-1 1 
1 101 May, 21 2011 May, 28 2011 May, 21 2011 May, 28 2011 Name-2 (null) 

您可以點擊這裏:http://sqlfiddle.com/#!6/a56ee/2

如果您還需要進一步的研究請採取評論。希望它可以幫助你!

+2

OP已經在他們的帖子中指出他們預計該查詢應該起作用。所以你在這裏發表的只是一個明顯的陳述。這可以作爲評論,以確認OP在他們的期望中是正確的。如果你至少可以使用** MS Access **演示程序,它*可能*作爲答案很好。這將部分解決實際問題(「問題出在哪裏?」),並表明這個問題至少不是與MS Access有關。但是,現在的答案確實沒什麼價值。 –