[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