#1 Thu 11 April 2019 10:58
- Oliv38
- Participant actif
- Date d'inscription: 21 Dec 2011
- Messages: 142
QGIS 3.4.2: Requête SQL inversée
Bonjour,
je suppose que le sujet a déjà été évoqué quelque part mais je ne trouve pas...
Du coup je cherche assez simplement à écrire une requête spatiale qui me permettent de sélectionner des polygones qui ne sont pas contenus dans d'autres polygones.
Visiblement le "NOT" ne suffit pas et je ne trouve pas de sous-requête qui fonctionne... je bloque clairement sur la syntaxe.
Pour info je me sers du module de base de données "DB Manager" sous QGIS 3.4.2.
Je vous remercie d'avance pour votre aide.
Cdlt, Olivier
Dernière modification par Oliv38 (Thu 11 April 2019 11:00)
Hors ligne
#2 Thu 11 April 2019 11:49
- sylvain poupard
- Participant assidu
- Date d'inscription: 19 Mar 2009
- Messages: 362
Re: QGIS 3.4.2: Requête SQL inversée
Bonjour,
En attendant la requête idéale, vous pouvez peut-être essayer "inverser la sélection" sur le résultat de la requête "contenu dans d'autres polygones".
Il ne vous restera plus qu'à faire un tri sur les occurrences si nécessaire.
Si c'est pour un résultat automatique via une vue dans DB manager je ne sais pas.
Bon courage
Hors ligne
#3 Thu 11 April 2019 11:53
- Oliv38
- Participant actif
- Date d'inscription: 21 Dec 2011
- Messages: 142
Re: QGIS 3.4.2: Requête SQL inversée
Bonjour,
merci pour la réponse !
le résultat est bien celui de "Inverser la sélection" qu'il me faut mais effectivement c'est un traitement automatique que je voudrais.
Merci à vous.
Olivier
Hors ligne
#4 Thu 11 April 2019 12:08
- sylvain poupard
- Participant assidu
- Date d'inscription: 19 Mar 2009
- Messages: 362
Re: QGIS 3.4.2: Requête SQL inversée
Bonjour,
merci pour la réponse !
le résultat est bien celui de "Inverser la sélection" qu'il me faut mais effectivement c'est un traitement automatique que je voudrais.
Merci à vous.
Olivier
Avez-vous fouillé ici : https://docs.postgresql.fr/
Bon courage
Dernière modification par sylvain poupard (Thu 11 April 2019 12:24)
Hors ligne
#5 Thu 11 April 2019 12:37
- sylvain poupard
- Participant assidu
- Date d'inscription: 19 Mar 2009
- Messages: 362
Re: QGIS 3.4.2: Requête SQL inversée
...une autre idée :
ajouter à votre sélection la condition
Code:
ST_Within(geometry A, geometry B) = f
Mais il doit y avoir mieux!
Hors ligne
#6 Thu 11 April 2019 14:46
- Oliv38
- Participant actif
- Date d'inscription: 21 Dec 2011
- Messages: 142
Re: QGIS 3.4.2: Requête SQL inversée
Merci mais pour l'instant je n'ai pas le résultat escompté :-(
Sur Mapinfo j'arrivais à le faire avec une sous-requête dans le WHERE, mais sur QGIS je ne trouve pas la bonne syntaxe.
Dernière modification par Oliv38 (Thu 11 April 2019 15:02)
Hors ligne
#7 Thu 11 April 2019 16:46
- Oliv38
- Participant actif
- Date d'inscription: 21 Dec 2011
- Messages: 142
Re: QGIS 3.4.2: Requête SQL inversée
Re-bonjour,
j'ai trouvé une solution en faisant le parallèle avec une requête MapInfo. Pour ceux que cela intéresserait voici donc une requête qui fonctionne :
SELECT *
FROM "table_A"
WHERE "table_A"."id" NOT IN (
select "table_A"."id"
from "table_A","table_B"
where ST_WITHIN("table_A"."geometry","table_B"."geometry"))
J'obtiens en résultat les polygones de la table A qui ne sont pas contenus dans les polygones de la Table B.
Merci pour votre aide.
Cdlt,
Hors ligne