2016-05-17 7 views
0

IDフィールド(自動番号)とitemフィールドのカスタムテーブルがあります。多くのフィールドを持つ私の会社が提供する別のテーブルがありますが、itemwhse、およびqty_on_handフィールドもあります。MS Access 2013:一致がない場合、私の右ジョインクエリがNULLを返さないのはなぜですか?

私はカスタムテーブルにリストされているアイテムだけを探したいので、私は右のジョインを使用します。 しかし、、私はまた、いくつかの基準でフィルタリングする必要があります。私は 'whse = A'と 'qty_on_hand> 0'が必要ですが、私がこれを行うときには、NULLを返すのではなく、一致するものが除外されます。カスタムテーブルのすべての行が返されるようにするにはどうすればよいでしょうか?一致がない場合は、NULLを返します。

私は主にAccessのデザインビューを使用しますが、デザインビューで私の作業で作成されたとして、これはSQLです:あなたが、いくつかのフィルタリングを適用することができるように

SELECT 
    customtable.ID 
    ,customtable.item 
    ,Sum(companytable.qty_on_hand) AS SumOfqty_on_hand 
    ,companytable.whse 
FROM companytable 
    RIGHT JOIN customtable ON companytable.item = customtable.item 
GROUP BY 
    customtable.ID 
    ,customtable.item 
    ,companytable.whse 
HAVING 
    (((Sum(companytable.qty_on_hand))>0) 
    AND ((companytable.whse)="A")) 
ORDER BY 
    customtable.ID; 
+0

? – HansUp

+0

@HansUpはい私は – whatwhatwhat

答えて

1

あなたはLEFT JOINにかけ、これを切り替えることができ私はアクセスがそれの「デザイン」ビューであることを表しますかわからないんだけど、

SELECT customtable.ID, 
    customtable.item, 
    Sum(companytable.qty_on_hand) AS SumOfqty_on_hand, 
    companytable.whse 
FROM customtable 
LEFT JOIN companytable ON 
    companytable.item = customtable.item AND 
    companyTable.qty_on_hand > 0 AND 
    companyTable.whse = "A" 
GROUP BY customtable.ID, 
    customtable.item, 
    companytable.whse 
ORDER BY customtable.ID; 

:あなたのcompanytableでそれらのレコードは、参加される前に落下させるようなあなたのON句にcompanytableそれはうまくいくはずです。

また、あなたが参加する前にcompanytableをフィルタするサブクエリを使用することができます。

あなたは `HAVING`句を削除する場合は、あなたが期待するのNULLを参照しています
SELECT customtable.ID, 
    customtable.item, 
    Sum(comptable.qty_on_hand) AS SumOfqty_on_hand, 
    comptable.whse 
FROM (SELECT * FROM companytable WHERE qty_on_hand > 0 AND whse = "A") AS comptable 
RIGHT JOIN customtable ON comptable.item = customtable.item 
GROUP BY customtable.ID, 
    customtable.item, 
    comptable.whse 
ORDER BY customtable.ID; 
+0

第1のオプションでは、エラーメッセージ「JOIN式はサポートされていません。」が返されます。 – whatwhatwhat

+0

2番目のオプションは完全に機能しました。カスタムテーブルのすべての項目を取得し、 'qty_on_hand 'と' whse'。ありがとう。 – whatwhatwhat

関連する問題