Vous n'êtes pas identifié(e).
Pages : 1
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
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
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
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
Pages : 1