Оскільки поняття зовнішнього з’єднання не ввійшло в стандарт SQL-1, то виробники тих СУБД, в яких це поняття було реалізоване, використовували самі різні системи запису в своїх діалектах SQL.
Наприклад, та система, яку ми розглядали (*=*) – використовується в SQL Server.
В цій системі зовнішнє з’єднання називається символом *, який добавляється до знаку операції відношення в умові порівняння зв’язаних стовпчиків секції WHERE, яка визначає умову з’єднання.
Для позначення повного зовнішнього з’єднання * ставиться зліва і справа від операції:
WHERE
Для позначення лівого зовнішнього з’єднання * ставиться лише зліва:
WHERE
а правого зовнішнього з’єднання – справа:
WHERE
( , - це зв’язані стовпчики із двох таблиць і
відповідно)
Так само позначаються і інші види зовнішніх - сполучень і символ * добавляється до знаку відповідної операції порівняння; наприклад
WHERE
В СУБД Oracle також є зовнішні з’єднання, але вони позначаються по-іншому: зовнішнє з’єднання в секції WHERE позначається знаком + в ( ), тобто „(+)” – ці символи записуються справа від імені стовпчика тої таблиці, в яку добавляються рядки із значеннями NULL (тобто, допоміжної таблиці). Ліве зовнішнє з’єднання позначається так:
WHERE
а праве зовнішнє з’єднання – так:
WHERE
Повне зовнішнє з’єднання в Oracle не підтримується.
Зверніть увагу: знак (+) знаходиться на протилежній стороні по відношенню до тої, на якій знаходиться *.
Такі системи позначень мають недоліки:
- невідомо, як позначати умову з’єднання, коли використовуються кілька зв’язаних стовпчиків.
- неможливо коректно і точно записати зовнішнє з’єднання трьох і більше таблиць.
- запис зовнішнього з’єднання в секції WHERE вносить певну плутанину: згідно пояснень, як отримуються результати запиту,
= спочатку аналізується секція FROM і формується декартовий добуток таблиць, вказаних в ній,
= потім – із таблиці декартового добутку вилучаються рядки, які не дозволяють умові відбору секції WHERE.
Але декартовий добуток взагалі не містить рядків із значеннями NULL, які входять у зовнішнє з’єднання!
потрібно вносити корективи в схему, яка пояснює що саме буде отримано в результаті запиту:
= спочатку – проаналізувати секцію WHERE – чи необхідно виконувати зовнішнє з’єднання