2016-03-22 10 views
3

現在、SQLを使用してcgridviewを満たす新しいdataproviderを作成しています。SQLを固定してCGridViewにデータを自動配置するループ

私が抱えている問題は、ユーザーが作成した動的な質問のIDを直接ターゲティングして、フォームビューに1つずつ追加することです。

例えば、当然それは動作しません私が使用しているSQLが

MAX(CASE WHEN uv.user_type_variables_id = 1 THEN uv.value ELSE NULL END) Question1, 
MAX(CASE WHEN uv.user_type_variables_id = 2 THEN uv.value ELSE NULL END) Question2, 
MAX(CASE WHEN uv.user_type_variables_id = 3 THEN uv.value ELSE NULL END) Question3, 
MAX(CASE WHEN uv.user_type_variables_id = 4 THEN uv.value ELSE NULL END) Question4, 
MAX(CASE WHEN uv.user_type_variables_id = 5 THEN uv.value ELSE NULL END) Question5, 
MAX(CASE WHEN uv.user_type_variables_id = 6 THEN uv.value ELSE NULL END) Question6 

であると私は

array(
      'header' => 'Question1', 
      'name' => 'uv.user_type_variables_id', 
      'type' => 'raw', 
      'value' => '$data[\'Question1\']', 
     ), 
     array(
      'header' => 'Question2', 
      'name' => 'uv.user_type_variables_id', 
      'type' => 'raw', 
      'value' => '$data[\'Question2\']', 
     ), 

のような観点で各1を入れて持っていたとき、私ドンIDを知っていないので、ユーザーがフィールドを追加するたびにプログラムで変更することはできません!

上記のようにSQLを対象とし、フィールドを手作業で入力しなくても、動的にループしてグリッドビューに配置するにはどうすればよいですか?

私はこのようにそれをターゲットにすることが可能であることを前提としています

が、私はID

答えて

0
を宣言しなくても、それは私がグリッドに配置することができ、個々のIDと名前をターゲットにする他の方法を考えることはできません

これを試してみてください。

SELECT user_type_variables_id, 
     max(value), 
     row_number() over (order by user_type_variables_id) as n 
    FROM uv 
--WHERE uv.user_type_variables_id BETWEEN 1 AND 6 
GROUP BY user_type_variables_id 
+0

私がいる問題は、としてそれを使用するために)私はその後、それぞれの質問に名前を付けて使用すると、1つのクエリでこれを行うと、(ROW_NUMBERを返すことができ – DevAL

+0

1などを質問するためにそれを割り当てる必要があるということですuv.user_type_variables_idのcount(1)について最初に問い合わせるループの "for(;;)"ループ内のクエリの名前と配列の配列、 –

関連する問題