moodle 获取反馈项

moodle get feedback item

当我尝试获取反馈项目时,我只收到第一列,为什么?

SELECT
u.firstname as "Usuario",

 CASE WHEN i.name = 'task 1' THEN v.value END AS "1",
 CASE WHEN i.name = 'task 2' THEN v.value END AS "2",
 CASE WHEN i.name = 'task 3' THEN v.value END AS "3",
 CASE WHEN i.name = 'task 4' THEN v.value END AS "4",
 CASE WHEN i.name = 'task 5' THEN v.value END AS "5",
 CASE WHEN i.name = 'task 6' THEN v.value END AS "6",
 CASE WHEN i.name = 'task 7' THEN v.value END AS "7",
 CASE WHEN i.name = 'task 8' THEN v.value END AS "8",
 CASE WHEN i.name = 'task 9' THEN v.value END AS "9",
 CASE WHEN i.name = 'task 10' THEN v.value END AS "10",
 CASE WHEN i.name = 'task 11' THEN v.value END AS "11",
 CASE WHEN i.name = 'task 12' THEN v.value END AS "12"

FROM prefix_feedback AS f
JOIN prefix_course AS c ON c.id=f.course
JOIN prefix_feedback_item AS i ON f.id=i.feedback
JOIN prefix_feedback_completed AS fc ON f.id=fc.feedback
LEFT JOIN prefix_feedback_value AS v ON v.completed=fc.id AND v.item=i.id
JOIN prefix_user AS u ON fc.userid=u.id

GROUP BY u.firstname

ORDER BY u.id, i.id, i.name

当我删除组时,我得到了所有列,但在很多行上

capture

名字列不唯一,按用户 ID 或用户名分组

GROUP BY u.id

GROUP BY u.username

此外,CASE 语句需要一个 ELSE,否则没有任何价值。

CASE WHEN i.name = 'task 1' THEN v.value ELSE 0 END AS task1,

GROUP BY 语句也用于求和和计数等。所以您可能缺少 SUM 或 MAX?

SUM(CASE WHEN i.name = 'task 1' THEN v.value ELSE 0 END) AS task1,

MAX(CASE WHEN i.name = 'task 1' THEN v.value ELSE 0 END) AS task1,