skillup

技術ブログ

Database

CASE式のすすめ その3

投稿日:

本日もCASE式です。

下記のようなテーブル(studentclub)があるとします。

std_id | club_id | club_name | main_club_flg
——–+———+————–+—————
100 | 1 | 野球 | Y
100 | 2 | 吹奏楽 | N
200 | 2 | 吹奏楽 | N
200 | 3 | バドミントン | Y
200 | 4 | サッカー | N
300 | 4 | サッカー | N
400 | 5 | 水泳 | N
500 | 6 | 囲碁 | N

ここで下記のような実行を行います。

  • ここで1つのクラブに所属している学生はクラブIDを取得
  • 複数のクラブに入っている場合はmain_club_flgが立っているクラブIDを取得

第一ステップ
std_id,と列数を出す

これをベースに肉付けしていきます。

第二ステップ

std_id | main_club
——–+———–
100 | 1
200 | 3
300 | 4
400 | 5
500 | 6

このように集計関数のなかで書くとGROUP BYされたなかで条件分岐をさせることができます。

-Database
-

執筆者:


comment

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

関連記事

no image

アンチパターン データ分身の術+DBの不要な連携+バージョンアップ未テスト

今回のアンチパターンは主にデータ設計に関する部分。 Contents1 同一データの使用1.1 デメリット1.2 対策2 DBの不要な連携2.1 デメリット2.2 対策3 サーバーの移行やバージョンア …

no image

オプティマイザと実行計画

データベースがSQLを受け取って処理を実行する前には下記のような段階があります。 Contents1 パーサー2 オプティマイザ3 カタログマネージャー4 テーブルからデータの取得5 参考リンク パー …

no image

HAVING句がらみの計算式

「達人に学ぶSQL徹底指南書」読んでますが、かなり難しいものがでてきましたね。 テーブルは前回のものと同じ以下のものを使います。 name | income ————+——– サンプソン | 4000 …

no image

日付がらみの処理に関して(MySQL&Java)

MySQL触りだして3年ぐらいたつんですがいまだに整理できないことが多いです。(特に日付がらみ) ちょっとJavaのネタと合わせて整理しておこうかなーと思います。 Contents1 MySQLの日付 …

no image

JPAを使用する  JavaSE編

現在の開発ではデータベースへの接続ではJPAを使っています。このJPAがなかなか曲者でいろいろと詰まることがありましたので解説させていただきます。 Contents1 JPAとは?1.1 メリット1. …