#1 Wed 25 October 2000 06:47
- Laspic
- Invité
MAPINFO, SQL Query
Bonjour,
Ma question concerne l'editeur de requete SQL de MapInfo. Comment est il
possible d'utiliser la fonction logique not avec les fonctions
geographique intersects , within ... afin d'inverser en quelque sorte une
selection d'objets. Il s'agirait par exemple de selectionner tous les
objets ponctuelles hors de quelques polygones disseminees...
D'un autre cote il semblerait que MapInfo ne soit pas capable d'inverser
une selection ?
Merci d'avance
#2 Wed 25 October 2000 06:50
- Marc Gilgen
- Invité
Re: MAPINFO, SQL Query
Il n'est pas possible d'utiliser la fonction not avec les operateurs
spatiaux intersects , within , etc. Vous pouvez passer par une
sous-requete. Concretement :
Select * from point
where NUMERO_POINT Not in (select point.NUMERO_POINT from point,
polygone where point.obj within polygone.obj)
D'un point de vue performance, cette requete n'est pas optimalisee, mais
elle fonctionne.
En esperant avoir repondu a votre question.
Marc Gilgen
#3 Wed 25 October 2000 06:50
- DAvid HILPIPRE
- Invité
Re: MAPINFO, SQL Query
Il est necessaire de passer par une sous selection pour obtenir ce que vous
cherchez.De plus, il est imperatif de ne pas mentionner la tableB dans la liste
des tables utilisees pour la requete (zone Table de la boite de selection
SQL)
not( Table enregistreA.obj [contains any, all] (select obj from tableB) )
not( Table enregistreA.obj [intersects any, all] (exclusif) (select obj from tableB) )
not( Table enregistreA.obj [within any, all] (select obj from tableB) )
La table A est forcement une table cartographiee enregistree - La table B peut
etre n’importe qu’elle type de table cartographiee.
Le vocabulaire SQL autorise dans la sous selection est le suivant
Select obj
>From une table cartographiee (une seule, temporaire ou enregistree, peu importe)
Where une condition simple (champsA =,,,=any(val1,val2,...),all(val1,val2,...)) ou multiple (avec and, or) avec ou sans fonction
Groupby toute operation d’aggregation faisant perdre la carte associee a la table, l’utilisation de ce mot est incompatible
>
> D'un autre cote il semblerait que MapInfo ne soit pas capable d'inverser
> une selection ?
>
Voici un exemple d'inverseur de selection graphique :
not (tableA.obj contains any (select obj from tableB)
tableA etant une table enregistree, tableB une table quelconque
Voici un exemple d'inverseur de selection sur des donnees tabulaire uniquement
on suppose que query1 est une selection de tableA, le champs servant
d'identifiant etant appele ici le champ ID
tableA.ID not in (select ID from query1)
Cordialement
David HILPIPRE
ARCADE Conseil
d.hilpipre@ arcadeconseil.fr