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

MySQLのLIMIT,OFFSETに関して&explainの見方など

自作のWEBアプリを作っていたところSELECT句が異常に遅いケースがありました。 発見までにかなり時間がかかったんですが、不可思議な現象としてはOFFSETが小さいときと大きいときで検索スピードが全 …

no image

JPAでのリレーションに関して

JPAではテーブルをクラスで定義します。もちろん例外とかはいろいろあるのですが、1テーブル1クラスというつくりで、これをエンティティと呼びます。 もともとクラスを作ってからDBを作成したり、JTAの規 …

no image

外部結合について 行列変換

今回から外部結合について学習します。 これはCASE式でもやった集合の考え方が大事になってきます。 例えば下記のようなテーブルCoursesとがあるとします。 name | course &#8212 …

no image

jQuery modalダイアログについて&重複時間処理

Contents1 jqueryモーダルダイアログ1.1 あらかじめ読み込むライブラリ1.2 ソース本体1.2.1 Html側1.2.2 Javascript側1.2.3 参考リンク2 重複時間につい …

no image

SQL結合 サブクエリに関して

今回はサブクエリに関してです。 もちろんSQL実践入門を読み進めています。 SQL上ではテーブル、ビュー、サブクエリというのは機能的にはそれほど変わらず主にパフォーマンスの点で違いがでてきます。 以下 …