我目前正在使用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
答案 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