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

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

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