Есть допустим два идентификатора ГАР - один до улицы, второй до дома. Нужно развернуть их в таблицу по столбцам - область, район, город(село), улица, дом, корпус, квартира, адрес целиком.
В гаре есть path в adm_hierarchy - там через точку указана иерархия адреса. В addr_obj есть колонка level:
1 – уровень региона
2 – уровень автономного округа (устаревшее)
3 – уровень района
35 – уровень городских и сельских поселений
4 – уровень города
5 – уровень внутригородской территории (устаревшее)
6 – уровень населенного пункта
65 – планировочная структура
7 – уровень улицы
75 – земельный участок
8 – здания, сооружения, объекта незавершенного строительства
9 – уровень помещения в пределах здания, сооружения
90 – уровень дополнительных территорий (устаревшее)
91 – уровень объектов на дополнительных территориях (устаревшее)
//донецкая респ
select name,typename,* from gar.addr_obj where level = '1' and isactual = 1 order by name
//ясиноватое
select name,typename,* from gar.addr_obj a
join gar.adm_hierarchy h on h.objectid = a.objectid
where h.parentobjid = 155815692
and isactual = 1 order by name
//нетайлово
select name,typename,* from gar.addr_obj a
join gar.adm_hierarchy h on h.objectid = a.objectid
where h.parentobjid = 155816063
and isactual = 1 order by name
//безкаравайной
select name,typename,* from gar.addr_obj a
join gar.adm_hierarchy h on h.objectid = a.objectid
where h.parentobjid = 156148609
and isactual = 1 order by name
//пусто
select name,typename,* from gar.addr_obj a
join gar.adm_hierarchy h on h.objectid = a.objectid
where h.parentobjid = 160316367
and isactual = 1 order by name
//дом
select housenum,hs.* from gar.houses hs
join gar.adm_hierarchy h on h.objectid = hs.objectid
where h.parentobjid = 160316367
and isactual = 1 order by housenum
То есть идентификатор 8faa9729-75fd-4d4b-8b6e-a1a9f82515ab например до улицы безкаравайной хранится в objectguid столбце в таблице addr_obj, в этой же строчке будет и path - 155815692.155816063.156148609.160316367 в этой же строчке будет и level для данной улицы 8. Нужно path разрезать по точкам и сделать запросы для каждого числа(objectid) к таблице addr_obj и по уровню level'а записать в таблицу
postgresql