PostgreSQL La base de donnees la plus sophistiquee au monde.

Forums PostgreSQL.fr

Le forum officiel de la communauté francophone de PostgreSQL

Vous n'êtes pas identifié(e).

#1 08/10/2012 15:18:54

lea
Membre

Pb de requête avec champ geometrie (postgis)

Bonjour,

je cherche à faire une requête SQL pour obtenir à partir d'une table existante une vue dans laquelle je dois récupérer obligatoirement le champ clé primaire (gid) et le champ géométrie (the_geom) de la table (là il n'y a aucun doublon) puis ensuite dans le champ 1, j'ai de nombreux enregistrements dont certains sont identiques et que j'aimerais regrouper. Puis je rajoute toujours dans cette même vue le champ2 avec les enregistrements correspondants au champ1 (qui a été regroupé).

J'arrive à obtenir quasiment ce que je veux lorsque je fais la requête 1 sans le champ geometrie mais quand je rajoute ce dernier dans la requête 2, je n'ai plus les regroupements sur le champ1!!
Je dois mal m'y prendre ... savez-vous ce qui cloche dans ma requête?

requête 1 :
create view table1.test as SELECT min(table1.gid) AS gid,table1.champ1,table1.champ2 FROM schema1.table1 group by table1.champ1,table1.champ2; --> ok mais il me manque le champ géométrie

requête 2 :
create view table1.test as SELECT min(table1.gid) AS gid,table1.champ1,table1.champ2, table1.the_geom FROM schema1.table1 group by table1.champ1,table1.champ2, table1.the_geom; --> je n'ai plus le regroupement par même dénomination du champ1! et si je ne déclare pas tous les champs dans le group by ça ne fonctionne pas du tout!

Savez-vous m'aiguiller

Merci

Léa

Hors ligne

#2 08/10/2012 18:00:00

youssef
Membre

Re : Pb de requête avec champ geometrie (postgis)

c'est normal,

si j'ai bien compris ton champ the_geom est sans doublon, (donc peut être considérer aussi comme une clef),
en regroupant par ce champs là, tu n'auras pas un groupements des autres champs ( ou il y a des doublons ).

pour dépasser ce point il faut utiliser une fonction min, max ... comme tu l'as fait pour la clef primaire gid et pas le mettre dans la clause group by

Dernière modification par youssef (08/10/2012 18:01:29)

Hors ligne

#3 09/10/2012 09:42:36

lea
Membre

Re : Pb de requête avec champ geometrie (postgis)

Merci pour la réponse ... c'est malheureusement ce que j'avais fait mais le problème de cette solution c'est que le résultat du champ n'est plus une géométrie mais du texte et là ça ne va plus!! Comment récupérer un champs "geometry"?

Lea

Hors ligne

#4 10/10/2012 14:57:30

Marc Cousin
Membre

Re : Pb de requête avec champ geometrie (postgis)

Je pense qu'il vaudrait mieux avoir la requête, et la définition de la table, pour mieux comprendre. En tout cas, attention, faire un group by sur la géométrie ne va pas marcher: PG va utiliser l'opérateur = pour comparer les géométries, et pas ST_Equals. et geom1=geom2 si les bounding boxes de geom1 et geom2 (la boîte qui les contient) est égale, ce qui n'est pas du tout une vraie égalité.


Marc.

Hors ligne

Pied de page des forums