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

netbeansのJPQL補助機能

JPAでは基本的に生のSQLではなく、JPQLを使って書きます。 SQLでもタイプミスにイライラさせられることは多いのですが、JPQLはもっとですね・・・爆 そこで使えるのがNetbeansの入力補助 …

no image

SQL基礎 case式について

case式に関して。 集約系の関数では複雑な処理を一気に行うことができる。 case式は1列のみ有効。複数の列に対して行うことはできない。 case ~ when ・・・thenではwhenが評価され …

no image

データベース設計のアンチパターン 重すぎるOLTP+Date型不統一+データ量想定が甘い

Contents1 重すぎるOLTP1.1 デメリット1.2 対策2 DATE型の型の不統一2.1 デメリット2.2 対策3 データ量の想定が甘い3.1 デメリット3.2 対策 重すぎるOLTP ※O …

no image

エンティティの抽出と主キー決定

主に設計に関することのメモ。 Contents1 業務フロー分析2 エンティティの抽出3 エンティティの関連付け4 主キーの抽出を行う4.1 主キーの特徴4.2 サロゲートキーのメリット4.3 サロゲ …

no image

MySQL小ネタ テーブル単位のリストア・SQLの小ネタ(バックスラッシュの検索)

MySQLのちょい小ネタ。 Contents1 テーブル単位でバックアップ&リストア2 バックスラッシュの入ったSQLについて テーブル単位でバックアップ&リストア 1 通常のdump(データベース単 …