• 締切済み

countとdistinctを使ったSQL文ついて

countとdistinctを使ったSQL文について VB2005+SQLSERVER2005で開発を行っています。 distinctとcountを組み合わせて抽出するようなSQL文になるのかなと思うのですが うまくいきません カラム maker:メーカ名が登録されている テーブル shohin カラムmakerの実際のデータ例 富士通 NEC 東芝 パナソニック NEC NEC パナソニック 抽出した結果の例 富士通    1 NEC     3 東芝     1 パナソニック 2 メーカー名とその件数が出力結果となります 以上ですがわかる方いらっしゃいましたらご回答お願いいたします。

みんなの回答

回答No.2

select m.name,s.makercd,count(s.makercd) from shohin s left join meisho m on s.makercd=m.makercd group by s.makercd; 追加質問に素直に答えると上記です。 追加質問のエラーというのは、多分ですが、 「Column 'makercd' in field list is ambiguous」ではないでしょうか? であれば、これはgroup byで指定したmakercdに、 どちらのテーブルのmakercdかの指定がないためです。 上記のsqlは素直にそれを訂正しただけです。 ただ、例を見てたのですが、「004 東芝」はmeishoには登録されているけど shohinに出てきていないですね。 ----------- 001 富士通 3 002 NEC 2 003 パナソニック 1 004 東芝 0 ----------- もし、上記のような0件の結果も必要ならば以下となります。 select m.makercd,m.name,count(s.makercd) from meisho m left join shohin s on m.makercd=s.makercd group by s.makercd order by m.makercd;

tkwavek
質問者

お礼

度々、ご回答ありがとうございました。 いわれた様に行いましたら完成することができました。 お忙しい中何度もご回答いただきましてありがとうございます

回答No.1

distinctではなくgroup by を使います。 select maker,count(maker) from shohin group by maker;

tkwavek
質問者

お礼

ご回答ありがとうございました。 助かりました。 しかし、もう一つ問題が発生しました makerの所がメーカー名ではなくメーカーコードなのです。 それでleft joinでgroup by句をつなげることになると 思うのですがエラーが回避できません。 訂正 商品マスタ(shohin) カラム makercd 001 002 003 001 001 002 名称マスタ(meisho) カラムcode name code name 001 富士通 002 NEC 003 パナソニック 004 東芝 のようになります。 こんな感じに自分なりに考えたのですがエラーがでて回避できません。 select name, makercd,count(makercd) from shohin left join meisho on makercd = code group by maker お忙しいな中申し訳ありませんがもう一つご回答願いませんでしょうか

関連するQ&A