Postgres view: creare unique key nella query

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

Postgres view: creare unique key nella query

PJ Hooker
Buongiorno,

quando creo delle view in Postgres, da caricare in QGis come delle normali geometrie, devo sempre creare una unique key e ho sempre risolto (visto che di solito ho sempre una sola geometria di riferimento), facendo (a.gid) as gid o min(a.gid) as gid.

Non ho mai fatto fino ad ora però l'operazione di union (a quanto pare non ST_Union) tra due geometrie, dove ognuna delle 2 geometrie viene tagliata dall'altra, nel caso si sovrappone in modo diverso. Così dopo aver scoperto che avrei dovuto fare una serie di ST_Union, ST_Intersects, ST_Overlaps... e JOIN, con un risultato preciso e decisamente veloce nell'esecuzione, rimane il fatto che non ho una sola geometria da prendere il GID!!!

Ho trovato che è possibile fare una funzione, ma probabilmente non ho capito come funziona e quindi speravo si potesse inserire nella stringa sql una cosa di questo genere:

SELECT gid integer NOT NULL DEFAULT nextval('pg_catastali_wgs_gid_seq'::regclass), ...

Soluzioni a riguardo?

grazie.

allego la query solo per capire di cosa sto parlando:

    $strsql2a="
    SELECT scen2c, txtmemo,ST_Union(the_geom)
    FROM
    (
    SELECT p.gid as gid, scen2c, txtmemo,
    ST_Intersection(b.the_geom, p.the_geom) As the_geom
    FROM pg_destinazioni b INNER JOIN pg_catastali p
    ON ST_Intersects(b.the_geom, p.the_geom)
    WHERE ST_Overlaps(b.the_geom, p.the_geom)
    ) as foo
    WHERE gid = $q2A
    GROUP BY scen2c, txtmemo, gid
    ORDER BY txtmemo
    ";