2010-07-29 2 views
0

Я использую Access 2007 для создания SQL-запроса для объединения двух таблиц. Я смог это сделать, но тогда у меня нет строк, где столбцы со второй таблицы имеют NULL; У меня просто есть строки, где есть информация во второй таблице, которая соответствует. Я попытался сделать LEFT JOIN, но Access не понравилось. Вместо этого я пытаюсь создать лучшее дополнение «join/on» к моему запросу (см. Ниже), но теперь я получаю «Синтаксическую ошибку в предложении FROM». У вас есть идеи, что я делаю неправильно?SQL in Access 2007 - Ошибка синтаксиса

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 равна нулю).

Или СОЮЗ, первый из которых является всем a.id = b.id, второй, где b.id является нулевым.

(В зависимости от ваших точных требований)

Смежные вопросы