Geo_objects(id, level) geo_objects_attributes(id, name) geo_polygons(geo_id, simple_geometry) product_region(longitude, latitude, fias_id) запрос, который находит гео-объекты максимального level по координатам долготе и широте через функции ST_Intersects(gp.simple_geometry , ST_Transform(ST_SetSRID(ST_Point(p.longitude::numeric, p.latitude::numeric), 4326), 3857)) в таблице geo_polygons и обновляет поле "fias_id" значением из поля external_id таблицы geo_objects_attributes в таблице product_region. Язык postgresql
UPDATE product_region p SET fias_id=goa.external_id FROM geo_polygons gp, geo_objects go, geo_objects_attributes goa WHERE gp.geo_id = go.id AND go.id = goa.id AND go.level = (select max(go.level) from geo_objects go where ST_Intersects(gp.simple_geometry , ST_Transform(ST_SetSRID(ST_Point(p.longitude::numeric, p.latitude::numeric), 4326), 3857))