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

フィールド以外のプロパティをエンティティに持たせる

JPAでは基本的に1テーブル、1クラスです。 このためプロパティは必然的にテーブルのフィールドに対応しています。 ただ、必ずしもプロパティだけでなく、臨時で持たせておきたい、プロパティがあったりします …

no image

サブクエリ 移動平均など

前回の応用編です。 日付、入出金、残高はできましたが、ここからさらに、現在のレコードから3行以内(3行あれば3行、なければそれ以内でできるだけ)のレコードの合計値を出す計算を考えます。 結果だけ先に書 …

no image

dbUnitの使い方

えーJavaで有名なテストツールDBUnitについて。 DbUtilではありませんので間違えないように。(私は最初間違えました・・・) まだ全然使い込んでるわけではありませんがどんなことができるかとい …

no image

データクレンジング

リレーショナルデータベースでデータを管理する前に、しなくてはいけないことはデータをデータベースに登録できる形に整形することです。 このことをデータクレンジングといいます。 これを行わずに何も考えずにデ …

no image

cakePHPでの直SQL

今回はCakePHPにて直のSQLを書く方法を。 cakePHPにて大概の処理はもともと備わっているコマンドでなんとかなりますが、まれに直SQLを書いたほうがらくなこともあります。 書き方その1 [c …