2012-06-17 3 views
1

Я пытаюсь найти запрос в MS Acess для сравнения двух таблиц. Я основываю свое сравнение на 4 полях postal_code, городе, штате и стране. Я хочу иметь возможность получить все записи в таблице1, которые не имеют соответствия в таблице2.MS Access Запрос для сравнения 2 таблицы

Вот мои данные образца. Я ожидаю 2 записей в выходных данных запроса, что я пометил с «*»

table1 
====== 

POSTAL_CODE CITY  STATE_PROV COUNTRY_CODE 
*12345  Union  NJ   US 
45678  Hillside NJ   US 
*45678  Union  NJ   US 



table2 
====== 

POSTAL_CODE  CITY  STATE_PROV COUNTRY_CODE 
45678   Hillside NJ   US 

Вот что я пытался, но не делает работу:

SELECT DISTINCT table1.* 
FROM table1 LEFT JOIN table2 ON table1.POSTAL_CODE=table2.POSTAL_CODE 
WHERE ((table2.POSTAL_CODE Is Null)); 

Как я выполнить это? Пожалуйста, дайте мне знать любое предложение.

Спасибо.

ответ

1

Выражение ON для LEFT JOIN должно включать все 4 из этих полей, которые вы хотите сопоставить. Я также отказался от DISTINCT.

SELECT 
    t1.POSTAL_CODE, 
    t1.CITY, 
    t1.STATE_PROV, 
    t1.COUNTRY_CODE 
FROM 
    table1 AS t1 
    LEFT JOIN table2 AS t2 
    ON 
      t1.POSTAL_CODE = t2.POSTAL_CODE 
     AND t1.CITY = t2.CITY 
     AND t1.STATE_PROV = t2.STATE_PROV 
     AND t1.COUNTRY_CODE = t2.COUNTRY_CODE 
WHERE t2.POSTAL_CODE Is Null; 
+0

Большое спасибо, что сработало. – user765081

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