質問

2013年06月08日 23時25分
  • データ集計方法

情シスのオープンナレッジ『Syszo』サービス終了のお知らせ

質問

初めて投稿させて頂きます。

MySQLにてデータの管理をしております。
フラグで管理しているデータを実の値に変換して抽出したいのですが、
調べてみてもなかなかこちらの意図する情報が見つけられなかったため、
質問させて頂きます。

例としてどのようなことがしたいのか説明させて頂きます。
以下の様なDBがあります。

・男女テーブル

ID 性別 日時

1 1  5月
2 1  5月
3 2  6月
4 1  6月

・男女マスターテーブル

ID 性別

1 男性
2 女性

上記テーブルから以下のようなデータをSQL文で抽出したいのです。
・「男女テーブル」から日時=6月のもの
・「男女テーブル」の性別フラグを「男女マスターテーブル」の値に置き換えたもの

欲しい結果は以下のようなものです。

ID 性別  日時

3 女性  6月
4 男性  6月

初歩的な質問かと思うのですが、どうぞ宜しくお願い致します。
また、こういった方法を実現するためのヒントとなる
キーワード検索用語などでもお教え頂けましたら幸いです。

よろしくお願い致します。

1件の回答があります

回答

お疲れ様です。

普段はOracle屋さんなので、Oracle的なSQL(INNER JOINではない記述)で書いてみました。たぶんMySQLでもOKだと思います。


SELECT
男女テーブル.ID,
男女マスターテーブル.性別,
男女テーブル.日時
FROM
男女テーブル,
男女マスターテーブル
WHERE
男女テーブル.性別 = 男女マスターテーブル.ID
AND

男女テーブル.日時 = ’6月’

尚、男女マスターテーブルが2件しかない場合、MySQLですとifが使えますので、以下のような形でも対応可能ではないかと思います。(マスターが増えたら困りますが、性別マスターですとたぶん3つ以上は増えない気がしますが)

SELECT
ID,
if(性別=1,"男性","女性"),
日時
FROM
男女テーブル
WHERE
日時 = ’6月’

いずれもテストしてないので、実行結果を教えてもらえればと思います...。

2013年06月09日 01時22分

あなたもコメントしましょう!