Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ОБД / лабки / Звіт_ЛР15_бойко(1).docx
Скачиваний:
0
Добавлен:
27.01.2024
Размер:
508.16 Кб
Скачать

Праве зовнішнє з'єднання

Результат правого зовнішнього з'єднання для таблиць А і Б містить всі кортежі з правої таблиці (Б), навіть якщо умова з'єднання не містить збігів з кортежами лівої таблиці (А). Це означає те, що, якщо умова порівняння не знайде записів в таблиці А, то з'єднання в результаті все ж поверне рядки, але значення з колонок таблиці А будуть нульовими. Іншими словами, праве зовнішнє з'єднання повертає всі значення з правої таблиці і додає значення колонок з лівої таблиці або NULL, якщо немає збігу за предикатом з'єднання.

Наприклад, це дозволяє знаходити відділи працівників, але все ж показувати відділи, навіть якщо в них не буде працівників. Результат відрізняється від внутрішнього з'єднання тим, що працівники в неіснуючих відділах відфільтровуються.

Приклад правого зовнішнього з'єднання:

SELECT *

FROM Працівник

RIGHT JOIN Відділ

ON Працівник.КодВідділу = Відділ.КодВідділу

Завдання

Виконати запити до бази даних college згідно завданню з таблиці 1. Результати подати у вигляді змісту запиту, синтаксису запиту та скрін-шоту результату виконання запиту з екрану.

Таблиця 1 – Завдання для виконання

з/п

Зміст запиту: побудувати запит для отримання даних …

Тип з’єднання

1.

про прізвища викладачів та назви спеціальностей на яких працюють викладачі.

select lecturer_name, speciality_name from lecturers right join specialities on specialities.id_speciality = lecturers.id_speciality

RIGHT JOIN

2.

про аудиторію та назву корпусу, в якому знаходиться аудиторія.

select room_number, building_name from rooms NATURAL JOIN buildings

NATURAL JOIN

3.

про назви груп та назви спеціальностей.

SELECT group_name, speciality_name from groups join specialities using(id_speciality)

JOIN USING

4.

про викладачів і номер пари, на якій вони задіяні у четверг, відсортувавши по номеру пари (від 1 до 6)

select lecturer_name, period_number from scheldule right join lecturers on scheldule.id_lecturer = lecturers.id_lecturer right join periods on scheldule.id_period = periods.id_period where day_name= 'Четвер' order by period_number asc

RIGHT JOIN

5.

про назви груп та назви спеціальностей.

select group_name, speciality_name from groups NATURAL JOIN specialities

NATURAL JOIN

6.

про прізвища завідувачів відділень та голів циклових комісій.

SELECT department_chief, speciality_head from departments join specialities using(id_department)

JOIN USING

7.

про назви дисциплін та їх тип.

select subject_name, type_name from scheldule right join subjects on scheldule.id_subject = subjects.id_subject right join types_of_lessons on scheldule.id_type = types_of_lessons.id_type

JOIN ON

8.

про прізвища викладачів та назви спеціальностей на яких працюють викладачі.

SELECT lecturers.lecturer_name, specialities.speciality_name from lecturers, specialities where specialities.id_speciality = lecturers.id_speciality

LEFT JOIN

9.

про викладачів і номер пари, на якій вони задіяні

SELECT lecturers.lecturer_name, periods.period_number FROM `scheldule` RIGHT JOIN lecturers ON lecturers.id_lecturer=scheldule.id_lecturer RIGHT JOIN periods ON periods.id_period=scheldule.id_period

RIGHT JOIN

10

про назви дисциплін та їх викладачів.

SELECT subjects.subject_name, lecturers.lecturer_name FROM `scheldule` LEFT JOIN subjects ON subjects.id_subject=scheldule.id_subject LEFT JOIN lecturers ON lecturers.id_lecturer=scheldule.id_lecturer

LEFT JOIN

11

про назви груп 3 курсу та інформацію про пари (номер пари, початок та кінець пари).

SELECT groups.group_name, periods.period_number, periods.period_time_start, periods.period_time_end FROM `periods` JOIN scheldule USING (id_period) JOIN groups USING (id_group) WHERE groups.group_name LIKE ('3%')

JOIN USING

12

про прізвища викладачів та їх дисципліну, при умові що вони викладають «ЛЕКЦІЇ».

SELECT subjects.subject_name, lecturers.lecturer_name FROM scheldule JOIN lecturers ON lecturers.id_lecturer=scheldule.id_lecturer JOIN subjects ON subjects.id_subject=scheldule.id_subject JOIN types_of_lessons ON types_of_lessons.id_type=scheldule.id_type WHERE types_of_lessons.id_type=1

JOIN ON

13

про назви груп та назви спеціальностей, відсортувавши за назвою групи

SELECT groups.group_name, specialities.speciality_name FROM `groups` RIGHT JOIN specialities ON groups.id_speciality=specialities.id_speciality ORDER BY groups.group_name ASC

RIGHT JOIN

14

Побудувати запит для отримання унікальних даних про прізвища викладачів та спеціальностей на яких вони працюють, при умові що вони викладають хоча б одну пару у вівторок.

SELECT DISTINCT lecturers.lecturer_name, specialities.speciality_name FROM `scheldule` JOIN lecturers USING (id_lecturer) JOIN specialities USING (id_speciality) WHERE scheldule.day_name='Вівторок'

JOIN USING

15

про прізвища викладачів та назви спеціальностей на яких працюють викладачі.

SELECT specialities.speciality_name, lecturers.lecturer_name FROM specialities JOIN lecturers ON lecturers.id_speciality=specialities.id_speciality

JOIN ON

16

про аудиторію та назву корпусу, в якому знаходиться аудиторія, відсортувавши по номеру аудиторії (від мінімальної до максимальної)

SELECT rooms.room_number, buildings.building_name FROM `buildings` RIGHT JOIN rooms ON rooms.id_building=buildings.id_building ORDER BY rooms.room_number ASC

RIGHT JOIN

17

про аудиторію та назву корпусу, в якому знаходиться аудиторія, відсортувавши по номеру аудиторії (від максимальної до мінімальної)

SELECT rooms.room_number, buildings.building_name FROM `buildings` LEFT JOIN rooms ON rooms.id_building=buildings.id_building ORDER BY rooms.room_number DESC

LEFT JOIN

18

про прізвища викладачів та назви спеціальностей на яких працюють викладачі.

SELECT lecturers.lecturer_name, specialities.speciality_name FROM specialities JOIN lecturers ON lecturers.id_speciality=specialities.id_speciality

JOIN ON

15

Соседние файлы в папке лабки