![]() |
Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | |
|
Внешнее соединение таблиц определяется в предложении 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; Прочитано: 189 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!