[Gfoss] SQL ed aggiornamento delle geometrie. Più una domanda un po' strana!
Sandro Santilli
strk a kbt.io
Gio 22 Feb 2018 17:56:28 CET
On Thu, Feb 22, 2018 at 08:57:37AM -0700, Massimiliano Moraca wrote:
> /UPDATE tabella_dissolvenza
> SET gemetry = (SELECT ST_Union(geometry) as gemetry, tipo FROM
> tabella_dissolvenza GROUP BY tipo);/
>
> Giustamente mi compare questo messaggio /ERRORE: la sottoquery deve
> restituire solo una colonna/ Il messaggio è chiarissimo e ci sarei dovuto
> arrivare prima.
>
> La mia domanda è(finalmente!): c'è un modo per aggiornare in automatico le
> geometrie del vettore in cui ho applicato la dissolvenza o mi tocca rifare
> le tabella(che tramuterei in view a questo punto)?
Se il numero dei tipi e' lo stesso di prima puoi aggiornare
la tabella cosi':
WITH nuova_tabella_dissolvenza AS (
SELECT ST_Union(geometry) as gemetry, tipo FROM
tabella_dissolvenza GROUP BY tipo
)
UPDATE tabella_dissolvenza o
SET o.geometry = n.geometry
FROM nuova_tabella_dissolvenza n
WHERE o.tipo = n.tipo.
PostgreSQL supporta le "materialized view" se vuoi tramutare la
tabella in qualcosa di piu' stabile di una view ma piu' facilmente
aggiornabile di una tabella. Occhio che usare ST_Union in una view
puo' precluderti la possibilita' di aggiornare PostGIS nel caso
in cui l'aggregato ST_Union cambi il nome di un attributo o qualcosa
di simile.
--strk;
Maggiori informazioni sulla lista
Gfoss