Как я могу вычислить некоторых студентов в своей базе данных?

#database #postgresql

Вопрос:

У меня есть такие сущности:

введите описание изображения здесь

Есть преподаватели, студенты, языки, курсовые группы и группы с разделительной таблицей.

В каждой группе курсов может быть только один преподаватель и один язык, но у каждого преподавателя и языка может быть несколько курсов.

Кроме того, есть студенты. У каждого студента может быть несколько курсов, и на каждом курсе может быть несколько студентов.

Я не уверен насчет этого. Это правильная схема?

Почему я так думаю? У меня есть задание. Я должен рассчитать количество студентов в каждой группе, которые изучают английский язык.

Проблема: я не знаю, как найти студентов, которые изучают английский язык. Было бы проще, если бы студент мог пройти только один курс. Тогда мне нужно было бы просто проверить все курсы английского языка. Тем не менее, студент может пройти несколько курсов.

Пример: Студент Степан имеет (идентификатор курса=1) курс английского языка и (идентификатор курса=2) курс испанского языка. Я должен рассчитать этого студента для обеих групп.

P.S. Я был бы очень признателен, если бы вы просто ударили меня, возможно ли выполнить задачу с этой базой данных или как ее переделать 🙂

Ответ №1:

Сделайте DISTINCT выбор Students.Id , чтобы получить каждого ученика максимум один раз. Затем JOIN группы студентов, учебные группы и языки. Наконец, добавьте WHERE пункт о языках.Имя = «Английский». Вы должны быть в состоянии самостоятельно определить точный SQL