修复SQL和循环以自动将数据放入CGridView

时间:2016-03-22 14:26:51

标签: php sql sql-server yii

我目前正在使用SQL创建一个新的数据提供器来填充我的cgridview。

我遇到的问题是我必须直接将ID直接定位到用户创建的动态问题,并将它们逐个添加到表单视图中。

例如,我正在使用的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\']',
        ),

当我不知道ID并且无法在每次用户添加字段时以编程方式更改视图时,这不起作用!

如何像上面那样定位SQL,然后动态循环并放入gridview而不必手动输入字段?

我只是假设有可能以这种方式定位它,我想不出任何其他方法来定位每个单独的ID并命名它所以我可以将它放在网格中而不声明ID

1 个答案:

答案 0 :(得分:0)

试试这个:

  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