Главная » Программирование » Основы SQL. UNION и UNION ALL
Русфонд

Основы SQL. UNION и UNION ALL

6 октября 2012 - Рубрики Программирование

3675 просмотров

В сайдбар справа добавлена кнопка Google+. Если вам поможет данный материал, прошу вас нажмите на кнопку - порекомендуйте сайт в Google.

Добрый день, уважаемые читатели моего блога, рад снова видеть вас!

Продолжаем развивать тему по основам SQL. Сегодня мы поговорим о множественных операторах UNION и UNION ALL.

Под множеством понимается результат одного запроса. Указанные операторы позволяют соединить несколько результатов запросов в один. При этом количество полей в каждом запросе должно быть одиннаково. Помимо этого есть еще одно ограничение — типы данных соответствующих полей должны совпадать. То есть получите ошибку если будете соединять чиловое поле таблицы со строковым полем другой таблицы.

Разница между операторами UNION и UNION ALL заключается в том, что первый выкидывает из окончательного результата повторяющиеся строки. Также стоит упомянуть, что если нужна сортировка, то конструкция ORDER BY пишется в самом последнем запросе.

Синтаксис оператора довольно прост

select поле1, поле2,... полеN from таблица1 where условие
UNION [ALL]
select поле1, поле2,... полеN from таблица2 where условие
...
UNION [ALL]
select поле1, поле2,... полеN from таблицаM where условие
ORDER BY 1,2,3...

Опять же обратите внимание на позицию ORDER BY

В качестве примера (без особой смысловой нагрузки) объединим результаты выборок из таблиц employees и departments

select id, name from employees
union
select id, name from departments.

Стоит заметить, что данные операторы используются не очень часто, но иногда просто необходимы.

Рассмотрим второй пример следующиего вида — у вас есть запрос который возвращает 1 строку и допустим 3 поля(назовем их условно a,b,c). Запрос, например, такой (самый простой)

select a,b,c from table1

Чтобы развернуть эту таблицу и сделать 3 строки и одно поле можно как раз использовать union [all]

select a from table1
union all
select b from table1
union all
select c from table1

Если в качестве поля в первом запросе указано текстовое значение, то необходимо дать ему алиас.
Рассмотрим третий пример на эту тему

select '01' code, 'Январь' name from dual
union
select '02', 'Февраль' from dual
union
select '03', 'Март' from dual
union
...

Обратите внимание, что в первой строке алиасы заданы, а в остальных нет — это не обязательно.
На этом на сегодня все, надеюсь сложностей у вас не возникло

Если этот материал оказался вам полезен, порекомендуйте его в в Google, нажав кнопку Google+ справа в сайдбаре или через кнопки социальных сервисов ниже.

П.С. не забудьте оставить комментарий к статье, а также поделиться ссылкой с друзьями и коллегами через социальные сервисы или скопировав ссылку на статью ниже. Кроме того, вы можете предложить тему статьи через кнопку слева "Предложить тему статьи". Там же можно оставить пожелания, идеи по развитию сайта, а также благодарности (ну а вдруг)
П.П.С. предлагаю вам также вступить в Группа Вконтакте!группу Вконтакте, где вы сможете пообщаться с участниками на интересующие вас темы. Смелее!!!
Если вы больше времени проводите в Twitter, то за обновлениями на сайте можно следить, подписавшись на мою лентуTwitter: follow me!

Возможно вам также будут интересны статьи :

 

Предыдущие материалы из данной категории:

Комментариев: 1 , , ,

Понравилась статья? Поделитесь ссылкой




Комментарии к «Основы SQL. UNION и UNION ALL»:

  1.  Денис 28 ноября 2014 11:11:10

    Коротко о главном:) Пригодилось, спасибо.

Оставьте комментарий:




:wink: :twisted: :roll: :oops: :mrgreen: :lol: :idea: :evil: :cry: :arrow: :?: :-| :-x :-o :-P :-D :-? :) :( :!: 8-O 8)

Я человек, а не бот.