#database #postgresql
Вопрос:
У меня есть такие сущности:
Есть преподаватели, студенты, языки, курсовые группы и группы с разделительной таблицей.
В каждой группе курсов может быть только один преподаватель и один язык, но у каждого преподавателя и языка может быть несколько курсов.
Кроме того, есть студенты. У каждого студента может быть несколько курсов, и на каждом курсе может быть несколько студентов.
Я не уверен насчет этого. Это правильная схема?
Почему я так думаю? У меня есть задание. Я должен рассчитать количество студентов в каждой группе, которые изучают английский язык.
Проблема: я не знаю, как найти студентов, которые изучают английский язык. Было бы проще, если бы студент мог пройти только один курс. Тогда мне нужно было бы просто проверить все курсы английского языка. Тем не менее, студент может пройти несколько курсов.
Пример: Студент Степан имеет (идентификатор курса=1) курс английского языка и (идентификатор курса=2) курс испанского языка. Я должен рассчитать этого студента для обеих групп.
P.S. Я был бы очень признателен, если бы вы просто ударили меня, возможно ли выполнить задачу с этой базой данных или как ее переделать 🙂
Ответ №1:
Сделайте DISTINCT
выбор Students.Id
, чтобы получить каждого ученика максимум один раз. Затем JOIN
группы студентов, учебные группы и языки. Наконец, добавьте WHERE
пункт о языках.Имя = «Английский». Вы должны быть в состоянии самостоятельно определить точный SQL