Similar presentations:
Лекция 8 Объединения таблиц Join СПО
1.
ИспользованиеSQL
Объединения данных
2.
Оператор DML SELECTSELECT [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 JOINLEFT 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 JOINRIGHT 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 JOINFULL 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 JOININNER 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 = “Дюшес”)