[Gfoss] SQL ed aggiornamento delle geometrie. Più una domanda un po' strana!

Massimiliano Moraca massimilianomoraca a gmail.com
Gio 22 Feb 2018 18:46:33 CET


Si i tipi sono gli stessi

Ho provato con la tua indicazione creando un vettore e riproducendo il caso
mio. Lo script è questo:

*  WITH nuova_tabella_dissolvenza AS (*
*    SELECT ST_Union(geom) as geom, tipo FROM*
*    update_dissolve GROUP BY tipo*
*  )*
*  UPDATE update_dissolve o*
*    SET o.geom = n.geom*
*  FROM nuova_tabella_dissolvenza n*
*  WHERE o.tipo = n.tipo;*

Mi compare questo errore però:

*ERROR:  ERRORE:  la colonna "o" della relazione "update_dissolve" non
esiste*
*LINE 6:     SET o.geom = n.geom*
*                ^*


*SQL state: 42703*
*Character: 157*



Il giorno 22 febbraio 2018 17:56, Sandro Santilli <strk a kbt.io> ha scritto:

> 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