この場合、アンケートマスタ & アンケート項目マスタに対して、
アンケートデータとアンケート項目データを貯めていきます。
これを一覧表で表示させたいです。
(例)
ーーーーーーーーーー
アンケート番号|項目A|項目B|項目C
ーーーーーーーーーー
このとき、
AとBで絞り込み、Cでソートするというのは、
どういうSQLが考えられるでしょうか。
※この質問の回答に対する補足と同意です。
http://okwave.jp/qa/q731009.html
「 ●このようなテーブル構造の際に、DBから抽出したユーザのアンケート(いくつかの項目をピックアップし)を一行一ユーザとしてテーブルの表で表示したい場合、SQL文としてはどのようなものが最適でしょうか?最終的にはプログラム側では一ユーザのアンケートを一配列に納めた形で取り出したいのですが。。。」
select
アンケート番号,
max(case 項目名カラム=項目名1 then 回答 else null end) as 項目名1,
max(case 項目名カラム=項目名2 then 回答 else null end) as 項目名2
from table
group by アンケート番号
で1対多のデータを1対1に変換し、
これをLEFT JOINしてアンケートデータに結合させ対応したところ、
きれいに解決いたしました。
みなさん、ありがとうございました。
「アンケート期間が終わったらcreate tableして、そのアンケート専用の形のテーブルを作ってしまう」というのはどうかなと思いました まる
maxとcaseとgroup byの合わせ技で、とてもきれいに解決しました。