Создание сложного запроса - MySQL
Формулировка задачи:
Добрый вечер, друзья! Настала необходимость написать запрос, но он оказался сильнее меня. Прошу вашей помощи
Нужно создать запрос, который выводит всех студентов, которые сдали предмет БД на 5. Если есть какие то замечания по поводу ERD диаграммы с удовольствием выслушаю.. Прилагаю скриншоты БД и ERD диаграммы.
Решение задачи: «Создание сложного запроса»
textual
Листинг программы
SELECT `Студенты`.* FROM `Студенты` s JOIN `Группа` g ON (s.`Код группы`= g.`Код группы`) JOIN `Кафедра` k ON (k.`Код Кафедры`= g.`Код Кафедры`) JOIN `Дисциплина` d ON (k.`Код Кафедры`= d.`Код Кафедры`) JOIN `Ведомость` v ON (v.`Код Дисциплины`= d.`Код Дисциплины` AND v.`Оценка` = 5)
Объяснение кода листинга программы
В данном коде происходит объединение (JOIN) нескольких таблиц: Студенты
, Группа
, Кафедра
, Дисциплина
и Ведомость
.
Студенты
- это таблица, которая содержит информацию о студентах.Группа
- таблица, содержащая информацию о группах студентов.Кафедра
- таблица, содержащая информацию о кафедра, к которым относятся дисциплины.Дисциплина
- таблица, содержащая информацию о дисциплинах.Ведомость
- таблица, содержащая информацию об оценках студентов по дисциплинам. Запрос выбирает все поля из таблицыСтуденты
и объединяет их с другими таблицами по соответствующим ключам:s.
Код группы= g.
Код группы` - объединение по коду группы.k.
Код Кафедры= g.
Код Кафедры` - объединение по коду кафедры.k.
Код Кафедры= d.
Код Кафедры` - объединение по коду кафедры.v.
Код Дисциплины= d.
Код Дисциплины` - объединение по коду дисциплины.v.
Оценка= 5 - дополнительное условие, которое ограничивает выборку только оценками 5. Таким образом, запрос выбирает всех студентов из таблицы
Студенты`, которые изучают дисциплину с оценкой 5 на определенной кафедре и в определенной группе.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д