内部統合して集計する GROUP BY
チームをすべてを表示させそのチームに所属している人数を集計
SELECT team.team_id,team.team_name,count(member.team_id) AS 'チーム人数' FROM member RIGHT JOIN team ON member.team_id = team.team_id GROUP BY team.team_id;
+---------+-----------------+-----------------+ | team_id | team_name | チーム人数 | +---------+-----------------+-----------------+ | 1 | 現代 | 1 | | 2 | 日本画 | 2 | | 3 | ストリート | 2 | | 4 | デザイン | 0 | +---------+-----------------+-----------------+ 4 rows in set (0.00 sec)
詳しく
count(member.team_id) AS 'チーム人数' とは
COUNT関数は引数に指定したカラム名のカラムの行数を返す
今回の場合は、メンバーテーブルのteam_idの行数をとってきている
AS でカラム名に対して別名をつけている
GROUP BY team.team_id; とは
count関数などを使ってカラムの値を集計する場合、集計はグループ単位で行われる。
グループとは特定のカラムに格納されている同じ値を持つデータをまとめたもので、
どのカラムを対象にグループ化するのかを指定するにはGROUP BY句を使用する。
今回はteam_idを対象にグループ化し、count関数で集計