в результате левого внешнего соединения
Как видно, в результате левого внешнего соединения сохраняются все данные первого (левого) операнда.
Результатом операции table1 RIGHT OUTER JOIN table2 ON a1=b1 AND a2<b2 (правое внешнее соединение по условию) будет следующая таблица:
JR
a1 | a2 | table1.c1 | table1.c2 | b1 | b2 | table2.c1 | table2.c2 |
1 | 1 | 1 | 1 | 1 | 2 | 2 | 3 |
1 | 1 | 2 | 3 | 1 | 2 | 2 | 3 |
1 | 1 | 2 | 3 | 1 | 2 | 2 | 3 |
NULL | NULL | NULL | NULL | 1 | 1 | 1 | 1 |
NULL | NULL | NULL | NULL | 3 | 3 | 2 | 3 |
NULL | NULL | NULL | NULL | 4 | 4 | 4 | 4 |
NULL | NULL | NULL | NULL | 3 | NULL | NULL | 5 |
NULL | NULL | NULL | NULL | 3 | NULL | NULL | 5 |
Как видно, в результате правого внешнего соединения сохраняются все данные второго (правого) операнда.
Результатом операции table1 FULL OUTER JOIN table2 ON a1=b1 AND a2<b2 (полное внешнее соединение по условию) будет следующая таблица:
JR
a1 | a2 | table1.c1 | table1.c2 | b1 | b2 | table2.c1 | table2.c2 |
1 | 1 | 1 | 1 | 1 | 2 | 2 | 3 |
1 | 1 | 2 | 3 | 1 | 2 | 2 | 3 |
1 | 1 | 2 | 3 | 1 | 2 | 2 | 3 |
2 | 3 | 4 | NULL | NULL | NULL | NULL | NULL |
3 | NULL | NULL | 5 | NULL | NULL | NULL | NULL |
NULL | NULL | NULL | NULL | 1 | 1 | 1 | 1 |
NULL | NULL | NULL | NULL | 3 | 3 | 2 | 3 |
NULL | NULL | NULL | NULL | 4 | 4 | 4 | 4 |
NULL | NULL | NULL | NULL | 3 | NULL | NULL | 5 |
NULL | NULL | NULL | NULL | 3 | NULL | NULL | 5 |
Как видно, в результате полного внешнего соединения сохраняются данные обоих операндов. Кстати, полное внешнее соединение иногда называют еще симметричным внешним соединением. Очевидно, что все операции внутреннего соединения и операция полного внешнего соединения коммутативны, а операции левого и правого соединения коммутативными не являются.
Результатом операции table1 LEFT OUTER JOIN table2 USING (c2) (левое внешнее соединение по совпадению значений указанных одноименных столбцов>) будет следующая таблица:
JR
a1 | a2 | table1.c1 | c2 | b1 | b2 | table2.c1 |
1 | 1 | 1 | 1 | 1 | 1 | 1 |
1 | 1 | 2 | 3 | 1 | 2 | 2 |
1 | 1 | 2 | 3 | 3 | 3 | 2 |
1 | 1 | 2 | 3 | 1 | 2 | 2 |
1 | 1 | 2 | 3 | 3 | 3 | 2 |
3 | NULL | NULL | 5 | 3 | NULL | NULL |
3 | NULL | NULL | 5 | 3 | NULL | NULL |
2 | 3 | 4 | NULL | NULL | NULL | NULL |
Результатом операции table1 RIGHT OUTER JOIN table2 USING (c2) (правое внешнее соединение по совпадению значений указанных одноименных столбцов) будет следующая таблица:
JR
a1 | a2 | table1.c1 | c2 | b1 | b2 | table2.c1 |
1 | 1 | 1 | 1 | 1 | 1 | 1 |
1 | 1 | 2 | 3 | 1 | 2 | 2 |
1 | 1 | 2 | 3 | 3 | 3 | 2 |
1 | 1 | 2 | 3 | 1 | 2 | 2 |
1 | 1 | 2 | 3 | 3 | 3 | 2 |
3 | NULL | NULL | 5 | 3 | NULL | NULL |
3 | NULL | NULL | 5 | 3 | NULL | NULL |
NULL | NULL | NULL | 4 | 4 | 4 | 4 |