• 締切済み

Access 選択クエリで計算結果を出したいのですが

お世話になっております。 Accessの選択クエリを使って、 「仕入マスタの仕入数」-「受注マスタの受注数」=「現在庫数」 を求めたいのですが、 この場合、仕入マスタにも受注マスタにも両方ともにレコードがないと、クエリで結果が求められませんよね?。 仕入マスタをベースに、仕入マスタにしかないレコードは「受注数=0」とみなして、クエリに全件出力させることってできないのでしょうか? 基本的な質問でごめんなさい。 宜しくお願いします。

みんなの回答

  • nda23
  • ベストアンサー率54% (777/1415)
回答No.3

私はジジイなので、若い頃はスポ根的にカラダで覚えました。 当時はCPUは遅く、メモリも少く、DBエンジンの頭も悪かったので、 単に結果が得られるだけではダメで、処理速度も求められました。 会社の若手にSQLを教える時は事例を示し、口頭で説明するように しています。「百聞は一見に云々」でして、こうすると大体は理解 してくれます。SQLはプログラムのように多数のステップから構成 されるわけでは無いので、理論の組み立てが重要です。 本とか、このような場での文字表現では表現する方も、理解する方も 難しさが伴います。 とりあえず、必要なデータ、条件などを箇条書きにすることを薦め ます。あとは事例ごとに自分の考えたSQLをこういう場に提示して、 添削を求めることで、自分の引き出しを多くするくらいでしょうか。

noname#105246
質問者

お礼

>nda23さま アドバイスありがとうございます。 やはり実践が一番の近道ということですね。 今はITとは全く関係ない企業で、一人、IT関係を任されている状態で、聞ける人もだれもいないため 今まで以上に積極的に、この「教えてgoo」などを活用していきたいと思いました。 ありがとうございます。

  • nda23
  • ベストアンサー率54% (777/1415)
回答No.2

SELECT A.仕入数-NZ(B.受注数,0) AS 現在庫数 FROM 仕入マスタ AS A LEFT JOIN 受注マスタ AS B ON A.商品コード=B.商品コード こんな感じですが、両マスタの一意キーが分からないのテキトーです。 LEFT JOIN なので、仕入に有るものは全て出力されます。対応する 受注データが無い場合はNullになります。 ミソはNZ関数で、NZ(項目,項目がNullの場合の値)という書式です。

noname#105246
質問者

お礼

>nda23様 おおおーー!できました! ありがとうございます! こんなに簡単にできることだったとは! やはりSQLで記述することを避けては通れませんね。 AccessのSQLや関数については、皆様専門の本などで勉強されますか? (VBAの詳細な本はあるのですが、SQLについてはちょっとしか触れていなくて。)

noname#245936
noname#245936
回答No.1

…うーむ、できるにはできるんです。 商品マスタを基準に、仕入、受注数をJOINすればOKなんですけど。 商品マスタに分類/フィルタ項目がないと、商品マスタ全部が 吐き出されてゼロだらけでうっとおしいと思います。 たとえば、50万件の商品マスタを持つ企業で、仕入が1点しかなく ても、現在庫台帳は499,999件の数量ゼロレコードが出ます。 そこはどうしましょうか?

noname#105246
質問者

お礼

>yama-takuさま ありがとうございます! SQL記述を無意識にさけていたというか、Accessの普通のクエリでできる範囲なのかと思っていたので JOINに種類があることなども全然思い当たりもしませんでした。 今回は、仕入マスタから仕入合計と受注マスタから受注合計を使って、「現在庫」を出したいのが目的だったので 受注マスタがゼロだらけになっても問題ありませんでした。 ありがとうございました!

関連するQ&A