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,
当我尝试获取反馈项目时,我只收到第一列,为什么?
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,