Вау - ура приятель! Я перевару это на выходных.
вая следующие таблицы:
Ученик
+----+-------+
| id | Name |
+----+-------+
| 1 | Chris |
| 2 | Joe |
| 3 | Jack |
+----+-------+
регистрация
+---------------+------------+-----------+----------+
| 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 |
+---------------+------------+-----------+----------+
Я хотел бы следующее
+----+-------+-----------+-----------+-----------+
| id | Name | Course 55 | Course 66 | Course 77 |
+----+-------+-----------+-----------+-----------+
| 1 | Chris | true | true | true |
| 2 | Joe | true | false | NULL |
| 3 | Jack | false | true | NULL |
+----+-------+-----------+-----------+-----------+
Примечание 1: Я знаю, что mysql не может иметь динамические столбцы (поправьте меня, если я ошибаюсь!), Поэтому я доволен запросом, начинающимся как:
SELECT id, name, course_55, course_66, course_77 etc...
Я доволен этим, потому что есть фиксированное количество курсов (4, если быть точным).Идеально Я хотел бы, чтобы это было динамичным; то есть не нужно вручную писать каждый курс в предложении SELECT.
Заметка 2: Это нужно для mysql чистого - я не хочу прибегать к PHP.
В настоящее время база данных насчитывает более 10000 студентов с 10000+ * 4 зачислениями (так как существует ровно 4 курса, и каждый студент учится во всех 4 модулях).
Заметка 3: Student.user_id проиндексирован, как и enrollment.enrollment_id, enrollment.student_id и enrollment.course_id.