Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Внешние соединения



Внешнее соединение таблиц определяется в предложении FROM согласно следующей спецификации:

SELECT { * | <значение1> [, <значение2> …]}

FROM <таблица1> <вид_соединения> JOIN <таблица2> ON <условие_поиска>

Внешнее соединение отличается от внутреннего тем, что в результирующий НД включаются также записи ведущей таблицы соединения, которые объединяются с пустым множеством записей другой таблицы. Какая из таблиц будет ведущей, определяет вид соединения:

LEFT – (левое внешнее соединение), когда ведущей являются таблица1 (расположена СЛЕВА от вида соединения).

RIGHT – (правое внешнее соединение), когда ведущей являются таблица2 (расположена СПРАВА от вида соединения).

FULL – (полное внешнее соединение), когда ведущими являются и таблица1, и таблица2.

Таблица A

Ст. P1 Ст.P2 Ст.P3
a X  
b X  
c Y  
d    

Таблица B

Ст. P1 Ст.P2
x  
y  
z  

SELECT A.P1, A.P2, B.P2

FROM A

LEFT JOIN B ON A.P2 = B.P1

Результирующий НД

Ст. A. P1 Ст. A.P2 Ст. B.P2
A x  
B x  
C y  
D    

SELECT A.P1, A.P2, B.P2

FROM A

RIGHT JOIN B ON A.P2 = B.P1

Результирующий НД

Ст. A. P1 Ст. A.P2 Ст. B.P2
a x  
b x  
c y  
     

SELECT A.P1, A.P2, B.P2

FROM A

FULL JOIN B ON A.P2 = B.P1

Результирующий НД

Ст. A. P1 Ст. A.P2 Ст. B.P2 Ст. B.P2
A x x  
B x x  
C y y  
D      
    z  

Пример 1. Несколько последовательных внешних соединений

SELECT R.DAT_RASH, R.TOVAR, T.ED_IZM, R.KOLVO, P.ADRES

FROM RASHOD R

LEFT JOIN POKUPATELI P ON R.POKUP = P.POKUP

LEFT JOIN TOVARY T ON R.TOVAR = T.TOVAR

Пример 2. Комбинирование внешних и внутренних соединений

SELECT P.POKUP, R.DAT_RASH, R.TOVAR, T.ED_IZM, R.KOLVO

FROM POKUPATELI P

P LEFT JOIN RASHOD R ON R.POKUP = P.POKUP

INNER JOIN TOVARY T ON R.TOVAR = T.TOVAR

3.4.1.14. Объединение запросов – UNION

Иногда бывает полезным объединить два или более результирующих наборов данных. Результирующие наборы должны иметь одинаковую структуру (состав столбцов). Если в результирующих наборах имеется одна и та же запись, в сводном наборе она не дублируется.

SELECT R.*

FROM RASHOD R

WHERE R.TOVAR CONTAINING ‘Сахар’

UNION

SELECT R.*

FROM RASHOD R

WHERE R.KOLVO >= 100





Дата публикования: 2014-12-28; Прочитано: 177 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.007 с)...