У меня есть две таблицы с именами MAIN_WAYS и SUB_WAYS.
MAIN_WAYS (id, producer, geoemtry, length, size, ...)
SUB_WAYS (id, producer, geometry, ...)
Итак, я хочу обновить столбец производителя SUB_WAYS так же, как столбец производителя MAIN_WAYS, где затрагиваются геометрии.
Я могу объединить эти две таблицы.
select
sw.id sw_id,
sw.producer sh_producer,
mw.id mw_id, mw.producer mw_producer
from
sub_ways sw,
main_ways mw
where
st_touches(mw.geometry, sw.geoemtry);
А
sw_id sh_producer mw_id mw_producer
1 null 1 x
2 null 2 x
3 null 3 y
4 null 5 z
Один из основных способов может касаться нескольких вспомогательных способов. В этом положении все метро, которые касались одного метро, будут одного и того же производителя.
update
sub_ways
set
producer = mw.producer
from
sub_ways sw
inner join
main_ways mw on st_touches(mw.geometries, sw.geoemtry)
where
st_touches(mw.geometries, sw.geoemtry) and
sw.producer is null;
Но этот запрос задает всем подпроизводителям одинаковые значения.
Как можно обновить это?