2016-08-10 5 views
0

JOINを私はAccessで、次のクエリを実行しようとしています:不正使用は、クエリ

SELECT CompareByOrderAndDescr.BOrder 
FROM CompareByOrderAndDescr 
LEFT JOIN OrdersNotReceived ON CompareByOrderAndDescr.BOrder = OrdersNotReceived.BOrder 
WHERE OrdersNotReceived.BOrder Is Null 

しかし、私はエラーメッセージ「NULLの無効な使用」を取得しています。

「CompareByOrderAndDescr」と「OrdersNotReceived」という2つの保存されたクエリがあります。どちらのクエリの "BOrder"フィールドにもNull値はありません。私はエラーの原因を探していますが、それらのどれもここには適用されないようです。

これは、あるテーブルから別のテーブルにないレコードを見つけるための基本的なSQLだと思っていました。私は何が欠けていますか?

編集:だけを明確にするには、次のクエリの両方が0行を返す:また、それは価値がある何のために、ここで私は保存する前に始まった元のクエリだ

SELECT * FROM CompareByOrderAndDescr 
WHERE BOrder IS NULL 

SELECT * FROM OrdersNotReceived 
WHERE BOrder IS NULL 

をOrdersNotReceivedクエリを問題の小さな部分に分解しようとして、それ自体の問題として処理します。

SELECT BOrder 
FROM CompareByOrderAndDescr cb 
LEFT JOIN (
    SELECT BOrder 
    FROM CompareByOrderAndDescr 
    WHERE [Received]='Not Received') nr ON nr.BOrder=cb.BOrder 
+0

ジョインの右側にあるテーブルのジョイン・フィールドがヌルであるレコードを検索する場合、機能的にはwhere節のない内部ジョインと同じです –

+0

@DavidCram what ?,いいえ、それはありませんINNER JOINと同じです。 – Lamak

+0

@DavidCramありがとうございます。しかし、私はINNER JOINとして試してみましたが、残念ながらNullの無効な使用について同じエラーを受けました。 – elmer007

答えて

0

あなたの質問を読んでいるところでは、OrdersNotReceivedにないCompareByOrderAndDescrのBOrdersが必要です。その場合は、私がNOT IN句を使用します。

SELECT CompareByOrderAndDescr.BOrder 
FROM CompareByOrderAndDescr 
WHERE CompareByOrderAndDescr.BOrder NOT IN 
(SELECT OrdersNotReceived.BOrder 
FROM OrdersNotReceived) 
+0

ありがとうございます。私が見つけようとしていることについて正しいです。しかし、このクエリも同じエラーを投げた。 – elmer007

+0

NULLについては?データが実際にどのように見えるかを提供しなければならないかもしれません。 – kbball

+0

両方の列のデータ型は何ですか? – Lamak

0

CompareByOrderAndDescr.BOrderとOrdersNotReceived.BOrder列がnull値を許可または両方ではないかどうかを確認してください?

+0

質問に編集を参照してください、列にはnullがありません – elmer007

関連する問題