JOIN

З’єднання таблиць за допомогою оператора JOIN може бути двох типів. Перший це повне безумовне з’єднання таблиць тобто ми отримаємо як результат одну таблицю із всіма стовпцями вхідних таблиць.

Приклад:

 

SELECT * FROM table1 JOIN table2;

 

Результат буде еквівалентним такому запиту:

 

SELECT * FROM table1, table2;

 

Зазвичай оператор JOIN можливо замінити простими умовами, а введений в мову запитів він лише тому, що при великій кількості данних об’єднання по умові буде виконуватись значно повільніше, ніж об’єднання оператором JOIN.

Якщо ж користуватися оператором об’єднання JOIN інтересними є такі комбінації з’єднань, їх можна зообразити схематично. Будемо використовувати два таблиці, опишемо їх структуру:

 

TableA.id = int, TableB.id = int,

TableA.name = VarChar; TableB.name = VarChar;

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

4 Spaghetti 4 Ninja

 

Спеціально використаємо однакові данні в таблицях, тоді можливі об’єднання таблиць схематично можна зобразити так:

 
SELECT * FROM TableA
INNER JOIN TableB
ON TableA.name = TableB.name
 
id  name       id   name
--  ----       --   ----
1   Pirate     2    Pirate
3   Ninja      4    Ninja

 

 

 

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

 

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

 

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

 

 

 

 

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

 

Таким чином за допомогою оператора JOIN з умовами ми можемо змоделювати роботу з данними таблиці, як з математичними множинами.