Перехресне з’єднаннястворює декартовий добуток двох таблиць:
SELECT *
FROM Girls CROSS JOIN Boys
- таблиця результатів буде містити всі можливі пари рядків із двох таблиць (кожний із N рядків однієї таблиці по черзі співставляється з кожним із K рядків іншої таблиці – результат містить N x K рядків).
В декартовому добутку немає ніяких зв’язаних стовпчиків чи умов відбору, тому в перехресних з’єднаннях секції ON та USING не допускаються.
Перехресні з’єднання не добавляють нічого нового в мову SQL – ті самі результати можна отримати за допомогою внутрішнього з’єднання, якщо не задавати в ньому умови відбору. Тому наведений запит можна записати ще і таким чином:
SELECT *
FROM Girls, Boys
На практиці перехресні з’єднання рідко використовуються – як правило, лише в складі інших запитів, які повинні видати якісь підсумкові дані.
Розширений запит на з’єднання
SELECT *
FROM Girls UNOIN JOIN Boys
- таблиця результатів цього запиту буде містити 4 стовпчика – всі стовпчики із першої таблиці плюс всі стовпчики із другої таблиці. Таблиця результатів містить 10 рядків – кожний з яких утворений в точності одним рядком із таблиць Girls або Boys, розширеним значенням NULL:
Таблиця результатів розширеного запиту на з’єднання
Girls. Prizv
Girls. Misto
Boys. Prizv
Boys. Misto
Баба
Борислав
NULL
NULL
Внучка
NULL
NULL
NULL
Жучка
Дрогобич
NULL
NULL
Кішка
Дрогобич
NULL
NULL
Мишка
Трускавець
NULL
NULL
NULL
NULL
Дід
Борислав
NULL
NULL
Іванов
Борислав
NULL
NULL
Петров
NULL
NULL
NULL
Сідоров
Дрогобич
NULL
NULL
Колобок
Стебник
На завершення порівняємо набори результатів, які отримуються при виконанні сполучень різних видів (див. cхему далі).
При сполученні двох таблиць Т1, яка містить N рядків, і Т2, яка містить K рядків, виконується наступне:
CROSS JOIN
· 1.перехресне з’єднання дасть таблицю з кількістю рядків N х K, яка складається із всіх можливих пар обидвох таблиць.
Набори результатів для різних видів з’єднань в SQL2
[INNER] JOIN
· 2.внутрішнє з’єднання дасть таблицю, яка містить деяку кількість рядків R, причому R < N x K. Внутрішнє з’єднання – це підмножина декартового добутку. Воно утворюється шляхом вилучення тих рядків із таблиці декартового добутку, які не задовольняють умові відбору.
LEFT [OUTER] JOIN
· 3.ліве зовнішнє з’єднання дасть таблицю, яка містить всі рядки внутрішнього з’єднання плюс розширені значеннями NULL рядки таблиці Т1, які не задовольняють умові відбору.
RIGHT [OUTER] JOIN
· 4.праве зовнішнє з’єднання дасть таблицю, яка містить всі рядки внутрішнього з’єднання плюс розширені значеннями NULL рядки таблиці Т2, які не задовольняють умові відбору.
FULL [OUTER] JOIN
· 5.повне зовнішнє з’єднання дасть таблицю, яка містить всі рядки внутрішнього з’єднання плюс розширені значеннями NULL рядки таблиць Т1 і Т2, які не задовольняють умові відбору.
UNION JOIN
· 6.розширений запит на з’єднання дасть таблицю, яка містить всі рядки таблиць Т1 і Т2, розширені значеннями NULL