SQL: работа с JOIN’ами

Рассмотрим таблицу А и Б

id name        id  name
-- ----        --  ----
1  Pirate      1   Rutabaga
2  Monkey      2   Pirate
3  Ninja       3   Darth Vader
4  Spaghetti   4   Ninja

1) Inner join выбирает записи которые одновременно присутствуют в обоих таблицах

SELECT * FROM TableA INNER JOIN TableB ON TableA.name = TableB.name

id  name       id   name
--  ----       --   ----
1   Pirate     2    Pirate
3   Ninja      4    Ninja

SQL: работа с JOIN'ами

2) Full outer join выбирает все данные из обоих таблиц возвращая Null для несвязанных полей

SELECT * FROM TableA FULL OUTER JOIN TableB ON TableA.name = TableB.name

id    name       id    name
--    ----       --    ----
1     Pirate     2     Pirate
2     Monkey     null  null
3     Ninja      4     Ninja
4     Spaghetti  null  null
null  null       1     Rutabaga       
null  null       3     Darth Vader

SQL: работа с JOIN'ами

3) Left outer join выбирает все записи из таблицы А сравнивая их с полями из таблицы Б. Если записи для таблицы А не найдены в таблице Б, то возвращается NULL

SELECT * FROM TableA LEFT OUTER JOIN TableB ON TableA.name = TableB.name

id  name       id    name
--  ----       --    ----
1   Pirate     2     Pirate
2   Monkey     null  null
3   Ninja      4     Ninja
4   Spaghetti  null  null

SQL: работа с JOIN'ами

4) LEFT OUTER JOIN с исключением записей. Выборка данных только из таблицы А

SELECT * FROM TableA LEFT OUTER JOIN TableB ON TableA.name = TableB.name WHERE TableB.id IS null

id  name       id     name
--  ----       --     ----
2   Monkey     null   null
4   Spaghetti  null   null

SQL: работа с JOIN'ами

5) FULL OUTER JOIN с выбором уникальных записей. Выбираем данные из таблиц А и Б, записи которых не совпали и вернули NULL

SELECT * FROM TableA FULL OUTER JOIN TableB ON TableA.name = TableB.name WHERE TableA.id IS null OR TableB.id IS null

id    name       id    name
--    ----       --    ----
2     Monkey     null  null
4     Spaghetti  null  null
null  null       1     Rutabaga
null  null       3     Darth Vader

SQL: работа с JOIN'ами

 

6) CROSS JOIN выборка перекрестного соединения с выбором всех вариантов. Диаграммы для него нет.

SELECT * FROM TableA CROSS JOIN TableB

Выбирает записи по принципу «все ко всему».

Рейтинг
( Пока оценок нет )
Понравилась статья? Поделиться с друзьями: