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

Printemps des cartes 2024

#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@texte-a-enlever.arcadeconseil.fr

 

Pied de page des forums

Powered by FluxBB