Пример 1 Отчет по участкам: количество и протяженность трубопроводов с разбивкой по диаметрам
В конструкции этого запроса используется оператор GROUP BY, который позволяет разделить записи базы данных по участку на группы. Группировка записей выполняться по значению внутреннего диаметра трубопровода. Выборка данных производится с помощью ключевого слова SELECT, после которого задаются параметры выборки. Осуществляется выбор следующих параметров:
- Внутренний диаметр трубы, м;
- Количество участков данного диаметра, для определения количества участковиспользуются функция COUNT;
- Протяженность трубопроводов заданного диаметра, функция SUM определяет суммарную длину участков.
SELECT [Внутренний диаметр трубы, м] AS "Диаметр",
COUNT(*) AS "Количество участков",
SUM([Длина участка, м]) AS "Протяженность"
FROM [Пример водопроводной сети]
WHERE typeid=8
GROUP BY [Внутренний диаметр трубы, м]
Пример 2 Заполнение адресов по потребителям значениями из базы по домам
В запросе осуществляется работа с пространственными данными. В конструкции этого запроса используется оператор сравнения пространственных объектов между собой STWithin. Он проверяет объект для которого вызвана функция на вхождение в указанный пространственный объект сравнения. Для внесения изменения в заданные столбцы таблицы(базы данных слоя) используется оператор UPDATE, он употребляется в связке с ключевым словом SET после которого следует наименование обновляемых полей таблицы. После выражения WHERE, задаются критерии, по которым будут происходить обновления. В данном случае происходит обновление поля Адрес базы данных по потребителям (потребители водопроводной сети в структуре слоя имеют тип-5), при условии что, символ потребителя находится внутри площадного объекта здания. Условие выбора потребителей type=8, в версии сборки 7.0.0.5425 и выше задается typeid=8.
UPDATE [Пример водопроводной сети] SET [Пример водопроводной сети].[Адрес] = [Здания].[Улица]+" "+[Здания].[Номер дома] WHERE [Пример водопроводной сети].typeid=5 AND [Пример водопроводной сети].Geometry.STWithin([Здания].Geometry)
Конструкцию запроса можно изменить, применив псевдонимы для названий слоев. Для создания псевдонима для слоя, Используется оператор FROM, после названия слоя следует указать псевдоним для этого слоя (перед псевдонимом можно также добавить ключевое слово AS).
UPDATE L1 SET L1.[Адрес] = L2.[Улица]+" "+L2.[Номер дома] FROM [Пример водопроводной сети] AS L1, [Здания] AS L2 WHERE L1.typeid=5 AND L1.Geometry.STWithin(L2.Geometry)