#1 Mon 13 January 2020 20:45
- preliator
- Participant assidu
- Date d'inscription: 17 Nov 2018
- Messages: 433
Doublon dans group by (novice)
Bonjour,
Je souhaiterais déterminer le type des parcelles qui se font intersecter par des rivières.
J'utilise cette formule :
Code:
select libellé_c, count(*) from rpg, rivieres riv where st_intersects(st_buffer(riv.geom,50), rpg.geom) and riv.layer = 'Ondaine_et_affluents' group by libellé_c order by libellé_c
Avec la formule que j'applique, je me rend compte qu'il me trouve énormément plus de résultat que lorsque je fais la même manip que sur QGis. Lorsque j'exporte le résultat sur QGis, je suis obligé de "Supprimer les géométries dupliquées" pour avoir le bon résultat.
Qu'ai-je oublié ?
Merci.
Dernière modification par preliator (Mon 13 January 2020 20:50)
Hors ligne
#2 Mon 13 January 2020 22:48
- Pierre
- DesCartesPourUnMondeMeilleur
- Date d'inscription: 22 Sep 2005
- Messages: 1643
Re: Doublon dans group by (novice)
Aloha
A première vue votre count(*) porte sur les deux tables rpg et rivieres. Si vous faites un count(rpg.*) cela devrait marcher.
Vous pouvez aussi tester quelque chose comme
Code:
select s.libelle_c, rpg.geom from (select libelle_c from rpg, riviers riv where st_intersects(st_buffer(riv.geom,50), rpg.geom) and riv.layer = 'Ondaine_et_affluents') s inner join rpg on s.libelle_c=rpg.libelle_c group by s.libelle_c, rpg.geom order by s.libelle_c
En passant par une sous requête ou mieux une CTE, vous devriez épurer les doublons. J'ai ajouté les geom dans les colonnes pour les récupérer.
art X I. Déclaration des Droits de l’Homme et du Citoyen 1789
La libre communication des pensées et des opinions est un des droits les plus précieux de l’Homme : tout Citoyen peut donc parler, écrire, imprimer librement, sauf à répondre de l’abus de cette liberté, dans les cas déterminés par la Loi.
Hors ligne