マルチステップフォーム送信用のフォームジェネレーターに取り組んでいます。
各ステップには複数のグループがあり、各グループには複数の質問があり、最後に各質問には独自のオプションがあり、それらはすべてプログラムに関連しています。
私はzendフレームワークで構築しています。
次のように完全な結果セットを取得するために、SQLステートメントを作成しました
$resultSet = $db->fetchAll($db->select()->from(array('rs' => 'registration_steps'))
->joinInner(array('rg' => 'registration_groups'), 'rs.id = rg.registration_step_id')
->joinInner(array('rq' => 'registration_questions'), 'rq.registration_group = rg.id')
->joinInner(array('qo' => 'registration_question_options'), 'rq.id = qo.question_id', array('option_text'))
->where('rs.program_id =?', $program_id));
問題は明らかです。オプションで内部結合を行っているため、結果が重複しています。
クライアント側で全体を解析すればうまくいくかもしれませんが、より最適化された、またはより良い方法を見つけたいと思っています。