• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:group byにより集計した結果での名称取得方法)

一回のSQLで商品名称とその売上件数の一覧を作成する方法

このQ&Aのポイント
  • 売上テーブルと商品マスタの情報を結合し、商品名称とその売上件数を一覧として表示するためには、一回のSQLで以下の処理をまとめることが可能です。
  • まず、売上テーブルを商品IDでグループ化し、各商品ID毎の売上件数を算出します。次に、商品マスタから商品IDと商品名のリストを取得します。
  • 最後に、商品IDをキーにして売上件数と商品名を結合し、売上件数が0件の商品も含めた一覧を作成します。これらの処理を一回のSQLで行うことで、効率的に結果を得ることができます。

質問者が選んだベストアンサー

  • ベストアンサー
noname#210417
noname#210417
回答No.1

商品マスタをメインにして売上テーブルを左外部結合すれば、1回のSQLでデータ取得できるはずです。 select 商品マスタ.商品名,Count(商品マスタ.商品名) from 商品マスタ left outer join 売上テーブル where 売上テーブル.商品ID = 商品マスタ.商品ID group by 商品マスタ.商品名 こんな感じのSQL分でお望みの結果が出ると思うのですが・・・SQL Serverの環境がないので検証出来ません。

参考URL:
http://uchukamen.com/SQL2005/Select/Select.htm
suzuparrow
質問者

お礼

ご回答頂きどうもありがとうございます。 ご教授頂いたSQLだと私もうまくいくような気がしていたのですが、実際に試してみると、なぜか0件のものについては表示されません。(LEFT JOINをRIGHT JOIN、INNER JOINに変更してみても駄目でした) group byの場合は左外部結合がうまくきかないことがあるのでしょうか?

suzuparrow
質問者

補足

ご回答頂きどうもありがとうございました。 あれから試行錯誤した結果、次のようなSQLで実現できました。 SELECT 商品ID ,商品名 ,isnull(tbl.件数, 0) 件数 from (select 商品ID, COUNT(*) 件数 from 売上テーブル group by 商品ID ) as tbl right join 商品マスタ on 商品マスタ.商品ID = tbl.商品ID

その他の回答 (2)

  • nora1962
  • ベストアンサー率60% (431/717)
回答No.3

> 【商品マスタ】 > ID 商品名 とあるのに、試されているSQLでは「商品マスタ.商品ID」になっているのが気になります。 テーブルのカラム名について確認されてはいかがですか。

suzuparrow
質問者

お礼

ご回答頂きどうもありがとうございます。 あれから試行錯誤した結果、次のようなSQLで実現できました。 SELECT 商品ID ,商品名 ,isnull(tbl.件数, 0) 件数 from (select 商品ID, COUNT(*) 件数 from 売上テーブル group by 商品ID ) as tbl right join 商品マスタ on 商品マスタ.商品ID = tbl.商品ID

  • marutone
  • ベストアンサー率40% (70/174)
回答No.2

以下のソースをご参考ください。 SELECT   商品マスタ.商品名,   COUNT(*) FROM   商品マスタ LEFT OUTER JOIN   売上テーブル ON 商品マスタ.商品ID = 売上テーブル.商品ID GROUP BY   商品マスタ.商品ID,   商品マスタ.商品名

suzuparrow
質問者

お礼

ご回答頂きどうもありがとうございます。 ご教授頂いたSQLだと私もうまくいくような気がしていたのですが、実際に試してみると、なぜか0件のものについては表示されません。(LEFT JOINをRIGHT JOIN、INNER JOINに変更してみても駄目でした) group byの場合は左外部結合がうまくきかないことがあるのでしょうか?

suzuparrow
質問者

補足

ご回答頂きどうもありがとうございました。 あれから試行錯誤した結果、次のようなSQLで実現できました。 SELECT 商品ID ,商品名 ,isnull(tbl.件数, 0) 件数 from (select 商品ID, COUNT(*) 件数 from 売上テーブル group by 商品ID ) as tbl right join 商品マスタ on 商品マスタ.商品ID = tbl.商品ID

関連するQ&A