3

2つのテーブルがあります。車両と所有権。OWNERSHIPテーブルにないすべての車両のリストを表示するクエリを作成しようとしています。基本的に、利用可能な車両在庫のレポートが必要です。私はこのクエリを試しました:

SELECT VEHICLE.*
FROM VEHICLE, OWNERSHIP
WHERE (VEHICLE.VEH_ID <> OWNERSHIP.VEH_ID);

私が得ている:ここに画像の説明を入力してください

私が平等を行うとき、私はそれが機能するように所有権にリストされているすべての車両を手に入れます。しかし、NOTEqualはそうではありません。何か案は?

4

2 に答える 2

2

試す

SELECT VEHICLE.*
FROM VEHICLE
WHERE NOT EXISTS
(SELECT NULL FROM OWNERSHIP WHERE VEHICLE.VEH_ID= OWNERSHIP.VEH_ID);
于 2012-11-25T18:42:20.220 に答える
1

テーブルに多くの行が含まれている場合、このNOT EXISTSアプローチは遅くなる可能性があります。はるかに高速な代替アプローチは、LEFT JOINwithWHERE句を使用して、右側の結合フィールドが Null である行のみを返すことです。

SELECT VEHICLE.*
FROM
    VEHICLE AS v
    LEFT JOIN OWNERSHIP AS o
    ON v.VEH_ID = o.VEH_ID 
WHERE o.VEH_ID Is Null;

Access の「一致しないクエリの検索ウィザード」を使用して、同様のクエリを作成できます。

両方のテーブルが小さい場合、おそらく違いに気付かないでしょう。しかし、違いが目立つかどうかを確認するのは簡単なはずです。このアプローチは、時間の経過とともにテーブルが大幅に拡大する場合に役立ちます。

于 2012-11-25T19:14:54.667 に答える