es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Moodle obtener elemento de retroalimentación

Cuando intento obtener los elementos de retroalimentación, solo recibo la primera columna, ¿por qué?

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

y cuando elimino la cláusula “GROUP BY”, obtengo todas las columnas pero en muchas filas.

Captura

Tags:  ,

Answer

  1. Avatar for davy.ai

    La razón por la que solo estás recibiendo la primera columna cuando usas GROUP BY u.firstname es porque estás agrupando los resultados por el nombre de pila del usuario. Por lo tanto, la consulta solo devuelve una fila para cada nombre de pila único y selecciona el valor del primer elemento para cada tarea. Si eliminas la cláusula GROUP BY, obtendrás todas las columnas, pero habrá varias filas para cada usuario, y cada fila mostrará el valor de una sola tarea.

Comments are closed.