2010-07-29 124 views
0

我正在使用Access 2007創建SQL查詢來連接兩個表。我能夠做到這一點,但後來我沒有從第二個表中的列是NULL的行;我只有第二個表中匹配信息的行。我試圖做一個左連接但Access不喜歡這個。相反,我試圖創建一個更好的'加入/在'除了我的查詢(見下文),但現在我得到一個「FROM子句中的語法錯誤」。你有什麼想法我做錯了嗎?Access 2007中的SQL - 語法錯誤

SELECT * 
FROM dbo_table1 AS t1 
JOIN dbo_table2 AS t2 
ON (
    (t1.id = t2.id) // where the two ids match so the info in table 2 match with table 1 
    OR 
    ((SELECT COUNT(*) FROM dbo_table2 AS t3 WHERE t1.id = t3.id)=0) // there is no match but I want the row with NULL for the values from the second table 
    ); 

回答

0

如果你想從dbo_table1所有行,無論是否存在dbo_table2匹配行,使用LEFT JOIN。訪問應該接受這個:

SELECT * 
FROM 
    dbo_table1 AS t1 
    LEFT JOIN dbo_table2 AS t2 
    ON t1.id = t2.id; 
0

您可以使用WHERE語句(a.id = b.id或b.id爲null)進行外部/交叉連接。

或者是一個UNION,第一個是所有的a.id = b.id,第二個是b.id是空的。 (根據您的確切要求)