<< На Главную     < В  Советы по MS SQL Server

 Приступая к созданию запросов в среде MS SQL  Server Management Studio, начинающим пользователям   полезно будет знать о  простейших приемах, которые помогут им  сэкономить время и быстрее продвинуться в изучении языка запросов Transact-SQL. Некоторые вещи здесь носят  элементарный характер и порою приходиться удивляться, как пользователи теряют много времени только из-за того, что не владеют такими, в общем то, весьма нехитрыми навыками.

   Для контекста ситуации предположим, что мы работаем с учебной базой Northwind. Далее, представим, что стоит учебная задача - из таблицы Orders (Заказы) , имеющей приблизительно сл. содержание :

 

Создать SQL-запрос

 

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

Для того, чтобы скажем, выбрать все записи из таблицы Orders можно записать такой запрос:

 

 

Конструкция [Northwind].dbo.Orders в запросе нужна для однозначного указания того, с какой базой вы будете работать. Строго говоря, в текущем сессии может быть подключено несколько баз данных:

 

На рисунке слева проиллюстрировано наличие подключений к двум базам - Northwind и Pubs.

 

Чтобы указать SQL-серверу, с какой конкретно базой вы будете работать, можно воспользоваться командой USE. Тогда приведенный выше запрос может выглядеть так:

 

Теперь в запросе Select нет необходимости указывать 'полный путь'  того, в какой из подключенных баз находиться нужная таблица.

 

Кстати сказать, чтобы немного облегчить себе жизнь при составлении запросов, не забывайте воспользоваться подсказкой:

 

 

Аналогичным образом по клавише Tab можно выбрать и нужную таблицу:

 

 

Если такая подсказка не появляется, то по меню Сервис>Параметры убедитесь, что  включена опция IntelliSence:

 

 

 

Однако, продолжим обсуждение команды USE. Любое новое использование команды USE, приводит к указанию в запросах ссылки на новую базу данных - в сл. примере мы даем указание использовать базу Pubs, что естественно приводит к ошибке при попытке сделать выборку, ну допустим  из таблицы Orders ( в базе Pubs такой таблички нет!):

 

 

Немного разобравшись с использованием команды USE, можно перейти к учебной задаче, поставленной в начале статьи - подсчету количества заказов. Соответствующий запрос с использованием команды COUNT и результат может выглядеть так (вкладка Результаты) :

 

 

В поле Counts отображено количество заказов, которые сделал каждый клиент.

 

Обратите внимание на два важных момента . Во-первых, использование команды COUNT подразумевает обязательного указания в запросе того поля, по которому вы делаете подсчет повторений ( в нашем случае это CustomerID). Второй момент связан с обязательным использование конструкции Group by для подсчета повторений. Отсутствие одного из этих условий приведет к ошибке:

 

 

Таким образом, использование конструкции COUNT ... GROUP BY подразумевает как-бы  'сплющивание' (группировку) исходной таблички по указанному полю.

 

 

И в завершении, немного усложним наш запрос, расположив клиентов в порядке, ну допустим возрастания количества сделанных заказов. Для этого воспользуемся конструкцией Order By :

 

 

Simashkov.2013

01.10.2013 г.

Назад