Я бы предложил 3 таблицы, но не 3, которые вы определили.
Таблицы учеников и пользователей просто дублируют друг друга, так что эти две могут стать 1 таблицей.
Таблица cousresотлично, как есть.
Третья таблица - это таблица, используемая для сопоставления / привязки / привязки студента к курсу и позволяющая устанавливать отношения типа «многие-многие». То есть у студента может быть много курсов, и у каждого курса может быть много студентов.
Таким образом, таблицы могут быть: -
table_users (идентификатор, имя, другие столбцы, если необходимо) table_courses (код,title) (если код уникален)* Первый запрос, список в соответствии с (ODRER BY) для именования связанных строк (таблица сопоставления используется только для того, чтобы значения не отображались, поскольку они будут бесполезны для конечного пользователя)
Во втором запросе используются некоторые агрегатные функции, которые объединяют значения в зависимости от того, как сгруппированы выбранные строки (GROUP BY) (разбитые на подмножества). Группировка ведется по курсу. Функция count возвращает количество строк в наборе, функции group_concat возвращает разделенный запятыми список всех значений указанного выражения (обычно столбца) в наборе.