Microsoft Access 2007 を使用していますが、この SQL にはEXCEPT演算子がないことがわかりました。LEFT JOINとIS NULLを使用してこの操作を実行できることを学びました。私はほとんどそれを持っていますが、親指を置くことはできません。
2 つのテーブルがあり、テーブル A には personID、foodID、および timePURCHASED のデータがあります。IDを持つ人は、ある時間にIDの食品を購入します。表 B はそのサブセットです。(テーブル A から行を選択しています。)
私の目標は、テーブルA EXCEPTテーブルB.
表 A
personIDfoodIDtimePURCHASED
1 1 2/6/2012 1:00:00 PM
1 4 2/6/2012 6:00:00 PM
2 3 2/7/2012 8:00:00 PM
3 1 2/6/2012 9:00:00 PM
3 3 2/6/2012 4:00:00 PM
表 B
personIDfoodIDtimePURCHASED
1 1 2/6/2012 1:00:00 PM
3 3 2/6/2012 4:00:00 PM
ゴール
personIDfoodIDtimePURCHASED
1 4 2/6/2012 6:00:00 PM
2 3 2/7/2012 8:00:00 PM
3 1 2/6/2012 9:00:00 PM
これが私が始めた私のコードです:
SELECT A.personID, A.foodID, A.timePURCHASED
FROM A
LEFT JOIN B ON (A.personID = B.personID)
WHERE ((B.personID) Is Null);
これにより、GOAL テーブルに一致する personID がなく (1、3)、personID が一致しない (2) という結果になることを理解しています。3 つの列すべてを同時に検討する必要があることを理解しており、 LEFT JOINでAND演算子を使用できることがわかりました。
SELECT A.personID, A.foodID, A.timePURCHASED
FROM A
LEFT JOIN B ON (A.personID = B.personID)
AND (A.foodID = B.foodID)
AND (A.timePURCHASED = B.timePURCHASED)
WHERE (((B.personID) Is Null)
AND ((B.foodID) Is Null)
AND ((B.timePURCHASED) Is Null));
これまでのところ、これは機能していません。アドバイスを求めています。形式、TLDR、またはこれが答えやすいものである場合はお詫び申し上げます。私は初心者で、SQLを学んでいます。ご協力ありがとうございます。