LUNARAVE WEBクリエイターの仕事と休息

アクセスカウンタ

Google Maps APIの利用戦国IXAWeb技術Youtubeチャンネル

zoom RSS カラムをカウントして別のテーブルに連結させる -SQL-

<<   作成日時 : 2011/05/06 18:53   >>

ブログ気持玉 0 / トラックバック 0 / コメント 1

データベースに格納されているデータを意図した形に表示したい場合はSQLを利用することが多いのだが、日頃SQLに触れていないと使い方を忘れたり発想が浮かばないので利用シーンに応じたSQLを紹介する。

今回のSQLの利用シーンは、複数のグループが存在し、それぞれのグループに属すメールアドレスの数をカウントするSQLだ。

DB構成としてはグループ情報を格納するテーブル"T_グループ"、メールアドレスを格納するテーブル"T_メール"があり、下記のようなデータが既に格納されているとする。


□T_グループ
group_idname
101AAAA
102BBBB
103CCCC



□T_メール
user_idgroup_idemail
1101a01@aaaa.aaaa
2101a02@aaaa.aaaa
3102b01@bbbb.bbbb
4101a03@aaaa.aaaa
5102b02@bbbb.bbbb



SQLの考え方としては、"T_グループ"をベースに"T_メール"を連結させる。
その際、"group_id"というカラムを利用する。

実際のSQLは下記となる。


SELECT T_グループ.*, COUNT(T_メール.group_id) AS cnt
FROM T_グループ LEFT JOIN T_メール ON
T_メール.group_id = T_グループ.group_id GROUP BY T_グループ.group_id, T_グループ.name;



□SQL実行の結果
group_idnamecnt
101AAAA3
102BBBB2
103CCCC0



"T_グループ"をベースにしているのでグループに属しているメールアドレスが無い場合はカウント値が"0"になる。

注意点として、このSQLではFROMより前の"T_グループ"の全てのカラムを表示するとしているため、「GROUP BY」で指定するカラムも全カラムを指定しておかなければ「ERROR: column "T_グループ" must appear in the GROUP BY clause or be used in an aggregate function」といったエラーが発生して実行されない。

対応策として、表示するカラム(FROMより前)とグルーピングするカラム(GROUP BYより後)を合わす必要がある。


ちなみに、"T_グループ"に特定に条件で抽出しソートする場合は、下記のようなSQLになる。

SELECT T_グループ.*, COUNT(T_メール.group_id) AS cnt
FROM T_グループ LEFT JOIN T_メール ON WHERE T_グループの条件文
T_メール.group_id = T_グループ.group_id GROUP BY T_グループ.group_id, T_グループ.name
ORDER BY T_グループのカラム ソート順;

テーマ

注目テーマ 一覧


月別リンク

ブログ気持玉

クリックして気持ちを伝えよう!
ログインしてクリックすれば、自分のブログへのリンクが付きます。
→ログインへ

トラックバック(0件)

タイトル (本文) ブログ名/日時

トラックバック用URL help


自分のブログにトラックバック記事作成(会員用) help

タイトル
本 文

コメント(1件)

内 容 ニックネーム/日時
It's appropriate time to make a few plans for the long run and it's
time to be happy. I have learn this post and if I may I desire to recommend you some fascinating issues or
tips. Perhaps you could write subsequent articles referring to
this article. I want to learn even more things about it!
Susanna
URL
2017/07/24 11:33

コメントする help

ニックネーム
URL(任意)
本 文
カラムをカウントして別のテーブルに連結させる -SQL- LUNARAVE WEBクリエイターの仕事と休息/BIGLOBEウェブリブログ
文字サイズ:       閉じる