1

2 つのテーブルを比較するために、MS Acess でクエリを作成しようとしています。postal_code、city、state、country の 4 つのフィールドに基づいて比較しています。table2 に一致しない table1 のすべてのレコードを取得できるようにしたいと考えています。

これが私のサンプルデータです。「*」でマークしたクエリ出力で 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));

どうすればこれを達成できますか? 何か提案があれば教えてください。

ありがとうございました。

4

1 に答える 1

2

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;
于 2012-06-17T15:24:02.307 に答える