- ベストアンサー
Accessのクエリとテーブル突合せについて
- Access2007でクエリで2つのテーブルを比較する際に、NULLの部分が抜けて表示されない現象が起きています。
- (1)明細データと(2)コード表を突合せし、(3)結果リストに変換コードを追加するクエリを作成しています。
- 結果リストの最後の結果が変換コードが表示されず、__となる現象が起きています。どのように解決すれば良いか教えてください。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
30代の男です。 作成したクエリ文を載せるほうが回答をもらうためにもよいと思います。 おそらくですが、 SELECT 明細データ.商品名 , 明細データ.区 , [コード表].変換CD FROM 明細データ LEFT JOIN コード表 ON (明細データ.区 = [コード表].区) AND (明細データ.商品名 = [コード表].商品名); とされていると推察します。 ここで問題とされていますデータ「CCCCCC,NULL」の変換CDが「000299」に変換されない事に関してですが、 まず、「NULL値」であることが問題となります。 「NULL値」は「何も入力されていない」という事になりますので 「NULL値」と「NULL値」を結合させ、結果を表示させるという事はできません。 可能であれば、「区」の項目には「NULL値」ではなく、何か別の文字(半角スペース1つでも可)を 入力することをお勧めします。 すでに多岐に渡る人がシステムを使用しており、変更が不可能というのであれば、 「明細データ」と「コード表」それぞれに以下のようなクエリを作成し、クエリ同士で 結合を行った結果を「結果リスト」とすれば表示は可能です。 ------- クエリ:明細データ変換 SELECT 明細データ.商品名, Nz([区]," ") AS 区変換 FROM 明細データ; ------- クエリ:コード表変換 SELECT [コード表].商品名, Nz([区]," ") AS 区変換, [コード表].変換CD FROM コード表; ------- 上記二つのクエリは単純に [区]という項目の値が「NULL値」であった場合、半角スペース一つで項目を表現するという ものになります。 以上です。 分かりづらい所がありましたら補足にご記載ください。。
お礼
内容はご推察通りで、意をくんでいただきありがたい次第です。 なるほど、すかさず試してみました。 元データ側をいじることができない為、対処方法としても提示いただいてる内容と同様に一度クエリーでNZを使い、どちらのテーブルもNullを""に変換。それを使って、もう一度クエリーであて込むようにしたところ、希望している出力が出るようになりました。 気づいてみればああなるほどなのですが、変なところではまってしまった為、危うく思考が止まってしまうところでした(^^; 本当に助かりました。 ありがとうございます。