skillup

技術ブログ

Database

複数GROUP BYでの注意

投稿日:

GROUP BYしたときに件数が増えるという現象があったので一応メモ。というか当たり前のことですが・・・

たとえば以下のようなテーブルがあったとします。

student

id student_name
1 ヤマダ
2 スズキ

club

id club_name
100 野球
200 サッカー
300 バスケ

student_club

student_id club_id
1 100
1 200
2 200
2 300

所属しているクラブの情報を出すには以下のSQLで出せます。

ここで生徒のidでgroupbyすると当然生徒単位になります。

気を付けないといけいないのですが、クラブ名がでることです。このクラブ名は当然ただしくないので注意しましょう。

ここで、生徒とクラブごとにgroupbyすると件数が増えます。他のキーがあれば当然件数が増えます。

当たり前のことなんですが、データが多かったり、テーブル構造が複雑だったりすると発見に時間がかかることが多いです。

-Database
-

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

no image

O/Rマッパー iciqlについて

以前、このブログでも紹介したO/Rマッパーのiciqlについて、使い方や問題点がある程度わかったので書いておきます。 Contents1 インストール2 自動生成3 注意点3.1 Date型のインポー …

no image

JPAでのリレーション(アノテーション使用)

JPAでリレーションを管理するとき、最初はアノテーションでやろうとしたんですが、結局やり方がわからずコンストラクタ式をかいて対処してました。 JPAでのリレーションに関して 外部キー制約があるやり方は …

no image

JavaでのSQLの書き方

ちょっと小ネタです。 通常SQLを記述する場合、縦に分けて書くのが見た目にも見やすく、保守性も高いです。 例として

と書くよりは、 [ …

no image

外部結合 応用編

本日は「達人に学ぶSQL徹底指南書」の外部結合の応用編です。 下記のような3つのテーブルがあるとします。例によってここを使わしてもらってます。 tblsex sex_cd | sex —& …

no image

slow-query-logについて

データベースを伴う部分でののチューニングですが、大きく分けると SQLを書き直す インデックスを張りなおす プログラム内部でキャッシュを有効化する 設定ファイルの修正 上記のようなかんじになるのではな …