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 AS p SET fias_id = g_a.external_id FROM geo_polygons AS gp INNER JOIN geo_objects AS g_o ON g_o.id = gp.geo_id INNER JOIN geo_objects_attributes AS g_a ON g_a.id = g_o.id WHERE ST_Intersects(gp.simple_geometry , ST_Transform(ST_SetSRID(ST_Point(p.longitude::numeric, p.latitude::numeric), 4326), 3857)) AND g_o.level = (SELECT MAX(level) FROM geo_objects);