Nous utilisons des cookies pour vous garantir la meilleure expérience sur notre site. Si vous continuez à utiliser ce dernier, nous considèrerons que vous acceptez l'utilisation des cookies. J'ai compris ! ou En savoir plus !.
banniere

Le portail francophone de la géomatique


Toujours pas inscrit ? Mot de passe oublié ?
Nom d'utilisateur    Mot de passe              Toujours pas inscrit ?   Mot de passe oublié ?

Annonce

Rencontres QGIS 2025

L'appel à participation est ouvert jusqu'au 19 janvier 2025!

#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

 

Pied de page des forums

Powered by FluxBB