gelgelgel回答ポイント 200ptウォッチ

MySQLのJOINとGROUP BY、COUNTを組み合わせた場合の出力がうまくいきません。


「仕事」と「申し込み」の以下のようなテーブルを結合して

▼tb_job(仕事)
|job_id|name|
|1|漁師|
|2|医者|
|3|農家|
|4|警官|

▼tb_contact(申し込み)
|contact_id|job_id|user|
|1|2|佐藤|
|2|2|田中|
|3|1|本村|

各仕事の申込数を以下のように出力したいと思っています。

▼理想
|job_id|name|申込数|
|1|漁師|1|
|2|医者|2|
|3|農家|0|
|4|警官|0|

そこで上記2つ「tb_contact」を「job_id」でGROUP BYして
SQLで以下のように結合するのですが

SELECT *,COUNT(*) FROM tb_contact RIGHT JOIN tb_job ON tb_contact.job_id = tb_job.job_id GROUP BY tb_contact.job_id;

下記のように申し込みがある仕事については集計できるのですが、
申し込みがない仕事については1括りにされてしまい、COUNTにも
その合計が表示されてしまいます。

▼結果
|contact_id|job_id|user|job_id|name|COUNT(*)
|NULL|NULL|NULL|3|農家|2
|3|1|本村|1|漁師|1
|1|2|佐藤|2|医者|2

「▼理想」のように出力するにはどの様なSQL文を投げれば良いのでしょうか。
ご教授のほど宜しくお願い致します。

※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。
ログインして回答する

ベストアンサー

その他の回答

この質問へのコメント

この質問への反応(ブックマークコメント)

質問の情報

登録日時
2012-03-09 04:32:24
終了日時
2012-03-09 07:58:52
回答条件
1人5回まで

この質問のカテゴリ

この質問に含まれるキーワード

MySQL2612SQL1319

人気の質問

メニュー

PC版