Una dos tablas (con una relación 1-M) donde la segunda tabla debe 'aplanarse' en una fila
Dados las siguientes tablas:
Estudiant
+----+-------+
| id | Name |
+----+-------+
| 1 | Chris |
| 2 | Joe |
| 3 | Jack |
+----+-------+
Inscripció
+---------------+------------+-----------+----------+
| enrollment_id | student_id | course_id | complete |
+---------------+------------+-----------+----------+
| 1 | 1 | 55 | true |
| 2 | 1 | 66 | true |
| 3 | 1 | 77 | true |
| 4 | 2 | 55 | true |
| 5 | 2 | 66 | false |
| 6 | 3 | 55 | false |
| 7 | 3 | 66 | true |
+---------------+------------+-----------+----------+
Me gustaría lo siguiente
+----+-------+-----------+-----------+-----------+
| id | Name | Course 55 | Course 66 | Course 77 |
+----+-------+-----------+-----------+-----------+
| 1 | Chris | true | true | true |
| 2 | Joe | true | false | NULL |
| 3 | Jack | false | true | NULL |
+----+-------+-----------+-----------+-----------+
Nota 1 Sé que mysql no puede tener columnas dinámicas (¡corríjame si me equivoco!), Así que estoy contento con la consulta que comienza como:
SELECT id, name, course_55, course_66, course_77 etc...
Estoy contento con esto porque hay un número fijo de cursos (4 para ser exactos). @Idealment Me gustaría que fuera dinámico; es decir, no tener que escribir manualmente cada curso en la cláusula SELECT.
Nota 2 Esto necesita mysql puro: no quiero recurrir a PHP.
La base de datos actualmente es de más de 10000 estudiantes con más de 10000 * 4 inscripciones (ya que hay exactamente 4 cursos y cada estudiante está en los 4 módulos).
Nota 3 Student.user_id está indexado y también lo está inscripción.enrollment_id, inscripción.student_id y inscripción.course_id.