Главная » Программирование » Основы SQL. Выборка из результатов запроса Select

Основы SQL. Выборка из результатов запроса Select

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

2281 просмотров

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

Добрый день!

Продолжаем изучение языка запросов SQL. В прошлой теме мы научились работать с подзапросами. Так вот подзапросы могут быть указаны в разных блоках оператора SELECT - подзапросы могут быть в блоке SELECT, подзапросы могут быть в блоке WHERE, а также в ORDER BY и GROUP BY. Ну и наконец, подзапросы могут быть в блоке FROM, о чем мы, собственно, и поговорим. Рассмотрим возможность сделать повторную выборку из результатов первого запроса SELECT.

Синтаксис достаточно прост:

select <список полей>
from (select <список полей> from <таблица>) <псевдоним>
[where ]
[group by]
[order by]

Теперь разберем на примере

Например, выберем из 2 таблиц фамилию сотрудника и его отдел, а потом посчитаем из получившейся таблицы сколько человек работает в каждом отделе.

select count(*), dept_name
from (
select name,
(select dept_name from departments where id=e.dept_id) as dept_name
from employees e
) mytable
group by dept_name

То есть сначала пишем один запрос, проверяем, что он выдает именно те данные, что нам нужны, далее данный запрос берем в скобки и в конце пишем псевдоним (в примере это mytable). Перед ним пишем еще один запрос так, чтобы первый запрос оказался после слова FROM. Ну и в конец дописываем по необходимости конструкции Where, Group by или Order by.

Где это можно применить? например, если вы пишете подзапрос и вам потом нужно по нему сгруппировать данные, то вам нужно будет этот же подзапрос писать в Group by. Это значительно увеличит код, если у вас несколько таких подзапросов, по которым необходимо сгруппировать данные. При использовании данного метода можно в Group By использовать псевдонимы столбцов (в примере dept_name)

Алтернатива — использование JOIN-ов.

Надеюсь с пониманием данного материала проблем не возникнет. Далее вы можете посетить остальные материалы из раздела Программирование.

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

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

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

 

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

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

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




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




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

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