231.35K
Category: databasedatabase

Лекция 8 Объединения таблиц Join СПО

1.

Использование
SQL
Объединения данных

2.

Оператор DML SELECT
SELECT [ALL | DISTINCT] <список выбора>
FROM <имя таблицы>, ...
[ WHERE <условие отбора> ]
[ GROUP BY <имя столбца>,... ]
[ HAVING <условие группирования> ]
[ORDER BY <имя столбца> [ASC | DESC],... ]

3.

SELECT + UNION
Объединение таблиц с одинаковой структурой или
результатов двух или более запросов (вертикальное
объединение).
Результат— общая таблица: сначала первая, затем вторая
(конкатенация)
Когда два ( или более ) запроса подвергаются
объединению, их столбцы вывода должны быть
совместимы для объединения.
Это означает, что каждый запрос должен указывать
одинаковое число столбцов
и в том же порядке что и первый, второй, третий, и так
далее,
и каждый должен иметь тип, совместимый с каждым

4.

Схема учебной БД
PROVIDER
PK
SORT
provider_id
PK
provider
CITY
PK
ВК city_id
sort_id
sort
PS
city_id
ВК provider_id
city
ВК sort_id

5.

SELECT таблица-справочник
Выбрать всех поставщиков из города Воронеж
SELECT provider.provider from city, provider
WHERE (city.city = “Воронеж”)
AND
(city.city_id = provider.city_id)
PROVIDER
PK
SORT
provider_id
PK
provider
CITY
PK
ВК city_id
sort_id
sort
PS
city_id
ВК provider_id
city
ВК sort_id

6.

SELECT многие-ко-многим
Выбрать всех поставщиков, поставляющих
определенный сорт напитка
SELECT provider.provider from provider, ps, sort
WHERE (sort.sort = “Лимонад”)
AND
(ps.sort_id = sort.sort_id)
AND
(ps.provider_id = provider.provider_id)
Выбрать все напитки, поставляемые
определенным поставщиком.
SELECT sort.sort from provider, ps, sort
WHERE (provider.provider = “Завод фруктовых вод”)
AND
(ps.sort_id = sort.sort_id)
AND
(ps.provider_id = provider.provider_id)

7.

LEFT JOIN
LEFT JOIN или (LEFT OUTER JOIN) – объединение
данных из двух таблиц (1-я левая, 2-я правая), при
котором из левой выбираются все записи, а из правой –
только те, которые удовлетворяют условию после
ключевого слова ON.

8.

LEFT JOIN примеры
Таблица – справочник (один-ко-многим)
Будут выбраны все города и поставщики в каждом городе.
Если в городе нет поставщика, в этом поле будет пусто
SELECT city.city, provider.provider
FROM city
LEFT OUTER JOIN provider ON city.city_id = provider.city_id
Три таблицы (многие-ко-многим)
Выбрать всех поставщиков и указать того, кто поставляет
определенный сорт лимонада.
SELECT provider.provider, sort.sort
FROM provider LEFT OUTER JOIN ps
ON provider.provider_id = ps.provider_id
LEFT OUTER JOIN
(SELECT sort.* FROM sort WHERE (sort.sort = “Мохито”)) AS sort1 ON
sort1.sort_id = ps.sort_id

9.

RIGHT JOIN
RIGHT JOIN или (RIGHT OUTER JOIN) – объединение
данных из двух таблиц (1-я левая, 2-я правая), при
котором из правой выбираются все записи, а из левой –
только те, которые удовлетворяют условию после
ключевого слова ON.
Таблица – справочник (один-ко-многим)

10.

RIGHT JOIN пример
Таблица – справочник (один-ко-многим)
Вывести все города, а там, где есть поставщики – поставщиков
SELECT city.city, provider.provider
FROM provider
RIGHT JOIN city ON city.city_id = provider.city_id
Три таблицы (многие-ко-многим)
Выбрать всех поставщиков и указать того, кто поставляет
определенный сорт напитка.
SELECT provider.provider, sort.sort
FROM (select ps.provider_id, sort.sort FROM ps, sort
WHERE (ps.sort_id=sort.sort_id) and (sort.sort=“Мохито")) AS sort1
RIGHT JOIN provider
ON provider.provider_id=sort1.provider_id

11.

FULL OUTER JOIN
FULL JOIN или (FULL OUTER JOIN) – объединение
данных из двух таблиц (1-я левая, 2-я правая), при
котором из обеих таблиц выводятся все записи, но при
этом записи, которые удовлетворяют условию после
ключевого слова ON, выводятся на одной строке.

12.

FULL OUTER JOIN пример
Таблица – справочник (один-ко-многим)
Вывести все города и всех поставщиков. Город-поставщик
между которыми есть связь выводятся на одной строке
SELECT provider.provider, city.city
FROM provider
FULL OUTER JOIN city ON city.city_id = provider.city_id

13.

INNER JOIN
INNER JOIN – объединение данных из двух таблиц (1-я
левая, 2-я правая), при котором и из левой, и из правой
будут выбраны только те записи, которые удовлетворяют
условию, указанному после ключевого слова ON

14.

INNER JOIN пример
Таблица – справочник (один-ко-многим)
Выбрать всех поставщиков, для которых
определены города
SELECT provider.provider, city.city
FROM provider
INNER JOIN city ON city.city_id = provider.city_id
Три таблицы (многие-ко-многим)
SELECT provider.provider FROM provider
INNER JOIN ps ON
provider.provider_id = ps.provider_id
INNER JOIN sort ON
(sort.sort_id = ps.sort_id) AND (sort.sort = “Дюшес”)
English     Русский Rules