Рубрика:
Базы Данных
И снова
продолжаю рассказывать про объединения.
Тема у меня здоровенная получилась, на
несколько частей. Зато и для других
(новичков) полезно, и сам вспомнил
некоторые моменты. Так что еще несколько
частей в июле по теме БД я опубликую.
Кстати,
еще на днях решил себе xbox поискать в
инете. После продолжительных поисков
я все-таки нашел место, где можно купить
xbox 360 прошитый, как раз то,
что я искал (правда — в Москве, но ничего,
скоро туда съезжу, куплю). Можете
посмотреть сами, по ссылке несколько
разных моделей представлены, есть из
чего выбрать.
Итак,
иногда бывает необходимо получить все
строки из первой таблицы и все строки
из второй (хоть в них и будут null’ы). Это
называется полным внешним объединением
(full outer join). Реализовать его можно с
помощью оператора + и стандартизованного
ключевого слова full outer join.
Объединение
с помощью +:
Так как
+ нельзя использовать с двух сторон
равенства, значит надо сначала прописать
вывод всех строк из первой таблицы,
затем – вывод всех строк из второй, а
потом объединить эти два множества и
удалить оттуда дубликаты. Для объединения
и удаления дубликатов есть оператор
слияния UNION. Можно сделать так:
SELECT *
FROM TABLE1 t1, TABLE2 t2 WHERE t1.id1 = t2.id1(+)
UNION
SELECT *
FROM TABLE1 t1, TABLE2 t2 WHERE t1.id1(+) = t2.id1
В
результате получится множество, имеющее
все строки как из первой, так и из второй
таблиц:
ID1 | VAL | ID2 | VAL2 | ID1 |
1 | один | 1 | - 1 - | 1 |
2 | два | 2 | - 2 - | 2 |
7 | семь | |||
5 | пять | |||
3 | три | |||
3 | - 4 - | 4 |
Объединение
с помощью full outer join:
Здесь
все намного проще. Пишется первая
таблица, затем ключевые слов FULL OUTER JOIN
(outer можно не писать), вторая таблица ON
условие объединения. Запрос будет
следующим:
SELECT *
FROM TABLE1 t1 FULL OUTER JOIN TABLE2 t2 ON t1.id1 = t2.id1
Комментариев нет:
Отправить комментарий