アンケートごとに質問項目数を自由に決められるアンケートASPを作ります。

この場合、アンケートマスタ & アンケート項目マスタに対して、
アンケートデータとアンケート項目データを貯めていきます。
これを一覧表で表示させたいです。
(例)
ーーーーーーーーーー
アンケート番号|項目A|項目B|項目C
ーーーーーーーーーー
このとき、
AとBで絞り込み、Cでソートするというのは、
どういうSQLが考えられるでしょうか。

※この質問の回答に対する補足と同意です。
http://okwave.jp/qa/q731009.html
「 ●このようなテーブル構造の際に、DBから抽出したユーザのアンケート(いくつかの項目をピックアップし)を一行一ユーザとしてテーブルの表で表示したい場合、SQL文としてはどのようなものが最適でしょうか?最終的にはプログラム側では一ユーザのアンケートを一配列に納めた形で取り出したいのですが。。。」

回答の条件
  • 1人5回まで
  • 13歳以上
  • 登録:2013/11/21 17:19:17
  • 終了:2013/11/28 17:20:04
id:torijun

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してアンケートデータに結合させ対応したところ、
きれいに解決いたしました。
みなさん、ありがとうございました。

回答(0件)

回答はまだありません

  • id:standard_one
    常に動的にやるならリンク先の方法でやるけど、300万件云々の心配はもっともだと思うので
    「アンケート期間が終わったらcreate tableして、そのアンケート専用の形のテーブルを作ってしまう」というのはどうかなと思いました まる
  • id:torijun
    ありがとうございます!
    maxとcaseとgroup byの合わせ技で、とてもきれいに解決しました。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません