Заполнение адресов по потребителям значениями из базы по домам

В запросе осуществляется работа с пространственными данными.

В конструкции этого запроса используется оператор сравнения пространственных объектов между собой 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)