Файл: Демонстрирующие работы запроса select с использованием join.docx

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 11.01.2024

Просмотров: 16

Скачиваний: 1

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
, также мы выяснили разницу между INNER JOIN и LEFT JOIN.
Перекрёстное объединение таблиц в SQL: CROSS JOIN в базах данных

Перекрестное объединение таблиц или CROSS JOIN является симметричной операцией, как и INNER JOIN, а это означает, что порядок написания таблиц в запросе не имеет значения, результирующая таблица будет одинакова. Перекрестное объединение таблиц в математике представляет собой декартово произведение, а это означает, что в результате выполнения операции CROSS JOIN будет соединять каждую строку первой таблицы с каждой строкой второй таблицы и в результате мы получим таблицу, в которой будут все сочетания строк, которые возможны.

Попробуем написать предложение SELECT, использующее ключевую фразу CROSS JOIN для объединения таблиц:

1

2

3

SELECT * FROM tracks

 

CROSS JOIN albums;

Здесь мы не будем приводить результаты работы CROSS JOIN, так как считаем не лучшей затей заставлять вас просматривать 45 строк результирующей таблицы. Но нам не обязательно смотреть на значения всех столбцов результирующей таблицы, их мы можем ограничить (на самом деле мы можем ограничить количество строк выборки при помощи LIMIT, сделать группировку выборки при помощи GROUP BY, упорядочить выборку при помощи ORDER BY, всё это реализуется так же, как и в простых запросах на выборку данных) и указать только нужные столбцы, давайте сделаем такой CROSS JOIN:

1

2

3

SELECT tracks.title, albums.title FROM tracks

 

CROSS JOIN albums;

Надеемся, что вы разобрались с тем, как работает CROSS JOIN в базах данных и у вас не возникнет трудностей с тем, чтобы написать SQL запрос, делающий перекрёстное объединение таблиц в базе данных.

Естественное объединение таблиц в SQL: NATURAL JOIN.

Вы можете использовать для всех запросов на объединение таблиц ключевое слово NATURAL: NATURAL LEFT JOIN, NATURAL INNER JOIN и NATURAL CROSS JOIN. Принцип действия NATURAL JOIN очень похож на принцип действия ограничения USING с той лишь разницей, что NATURAL JOIN автоматически осуществляет проверку на равенство между значениями каждого столбца, которые есть в обеих таблицах:

1

SELECT ... FROM table1 NATURAL JOIN table2...


Примерно так можно описать общий синтаксис использования NATURAL JOIN в SQL и базах данных.

Примеры использования NATURAL JOIN в базах данных:

1

2

3

SELECT tracks.title, second, price, albums.title FROM tracks NATURAL LEFT JOIN Albums;

 

SELECT tracks.title, second, price, albums.title FROM tracks INNER JOIN Albums;

Вся разница в том, что вам не следует вычислять значения предикатов ON и USING, когда вы используете NATURAL JOIN, если же всё-таки вы используете NATURAL JOIN вместе с ON или USING, то получите ошибку: Error: a NATURAL join may not have an ON or USING clause.

Объединение трех и более таблиц в SQL и базах данных

Операция JOIN очень мощная, но довольно-таки ресурсоемкая штука, без объединения таблиц нам бы не было смысла нормализовывать отношения до второй нормальной формы или до третьей нормальной (как бы мы получали сводные данные из связанных таблиц, если бы не было JOIN?), конечно, мы немного утрируем, но операции объединения таблиц очень облегчают нам работу с базами данных.

Мы уже видели на примерах INNER JOIN, CROSS JOIN и LEFT JOIN, как объединяются две таблицы, а теперь давайте посмотрим: как с помощью JOIN объединить три и более таблиц в одну. На самом деле всё очень просто, сперва пример объединения трех SQL таблиц в одну с помощью INNER JOIN:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

SELECT tracks.title, albums.title, artist.name  FROM tracks INNER JOIN

 

Albums ON tracks.album_id = albums.id

 

INNER JOIN artist ON albums.artist_id = artist.id;

 

title   title   name

 

Девушка по городу       Биографика      Вячеслав Бутусов

 

Песня идущего домой     Биографика      Вячеслав Бутусов

 

Полковнику никто не пишет       Би-2    Би-2

 

Мой друг        Би-2    Би-2

 

Моё сердце      25-й кадр       Сплин

 

Линия жизни     25-й кадр       Сплин

 

Остаемся зимовать       25-й кадр       Сплин

А теперь пример объединения трех и более SQL таблиц для LEFT OUTER JOIN в базе данных :

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

SELECT tracks.title, albums.title, artist.name  FROM tracks LEFT JOIN

 

Albums ON tracks.album_id = albums.id

 

LEFT JOIN artist ON albums.artist_id = artist.id;

 

title   title   name

 

Девушка по городу       Биографика      Вячеслав Бутусов

 

Песня идущего домой     Биографика      Вячеслав Бутусов

 

Полковнику никто не пишет       Би-2    Би-2

 

Мой друг        Би-2    Би-2

 

Моё сердце      25-й кадр       Сплин

 

Линия жизни     25-й кадр       Сплин

 

Остаемся зимовать       25-й кадр       Сплин

 

Мертвый город

 

Звезда по имени Солнце


Для CROSS JOIN мы пример писать не будем, так как в результате появится таблица с очень большим количеством строк, которую мы всё равно здесь не покажем. Добавим, что можно комбинировать вместе INNER JOIN, LEFTT JOIN и CROSS JOIN это обусловлено тем, что все действия по объединению нескольких таблиц делаются по порядку (можно представить, что JOIN – это операторы сложения).

Сначала объединятся первых две таблицы и получится результирующая, после чего результирующая таблица будет объединена с третьей таблицей и так можно до бесконечности, главное, чтобы ваши таблицы были связаны значениями.

Подведем общий итог: мы разобрались, как составлять SQL запросы SELECT, которые позволяют нам объединять две и более таблицы в одну. В языке SQL это делается при помощи ключевого слова JOIN, в том числе и в СУБД. MySQL дает возможность объединять таблицы тремя разными способами: INNER JOIN – внутреннее объединение таблиц, CROSS JOIN – перекрестное объединение таблиц и LEFT OUTER JOIN – внешнее объединение таблиц.