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é ?

#1 Thu 26 August 2004 22:37

Pdounias
Invité

Requete SQL sur 3 tables

Bonjour,
Je souhaiterai selectionner tous les objets d'une table (Occupation_sol) compris dans un tampon a 500m (Tampon_500m) et hors du tampon a 200m (tampon_200m).
J'ai donc essaye le code SQL suivant :
Tampon_500m.obj contains Occupation_sol.obj and not (Tampon_200m.obj contains Occupation_sol.obj).
La verification syntaxique ne donne aucun message d'erreur. Par contre lors du lancement le message suivant apparait Condition de jointure erronee... .
Je suis dans une impasse.

NB : Je suis sous MI 7.0

Merci pour votre aide.
Cordialement.

 

#2 Thu 26 August 2004 22:37

Laurent Frilleux
Invité

Re: Requete SQL sur 3 tables

bonjour

une solution toute simple, vous decoupez la bande des 500m avec la bande des 200 et vous faites votre selection. C'est pas aussi drole que les 3 tables mais ca marche.

Bonne journee

 

#3 Thu 26 August 2004 22:37

Christophe Barbier
Invité

Re: Requete SQL sur 3 tables

Bonjour,

Le probleme c'est que vous ne pouvez pas utiliser de negation dans une jointure.

Par exemple, impossible de faire :
Select * From Occupation_sol, Tampon_200m Where Not Occupation_sol.obj Intersects Tampon_200m.obj

A mon avis, le mieux est d'utiliser des sous-requetes.
Mais MapInfo n'accepte pas non plus d'avoir plus d'une sous-requete.
Il faudrait donc proceder en 2 temps:

Select * From Occupation_sol Where Obj Intersects (Select obj From Tampon_500m) Into sel1
Select * From sel1 Where Not Obj Intersects (Select obj From Tampon_200m)

Attention, Tampon_500m et Tampon_200m ne doivent contenir qu'un seul objet.
Sinon, MapInfo indique que le resultat de la sous-requete renvoie plus d'une valeur.

Cordialement

 

#4 Fri 27 August 2004 12:03

Jean-François Behm
Invité

Re: Requete SQL sur 3 tables

Bonjour,
voila ce que je propose :
Select * FROM Occupation_sol, Tampon_500m
WHERE Occupation_sol.obj Within Tampon_500m.obj
AND Occupation_sol.Identifiant NOT IN (SELECT Occupation_sol.Identifiant FROM Occupation_sol, Tampon_200m WHERE Occupation_sol.obj Within Tampon_200m)
Je suppose que vous avez un identifiant unique dans la table occupation_sol.
La sous-interrogation entre parentheses selectionne les objets contenus dans le tampon_200m et l'interrogation principale selectionne les objets contenus dans le tampon_500m et exclue les objets selectionnes par la sous-interrogation.

Bon courage....

 

#5 Tue 31 August 2004 12:09

PDOUNIAS
Invité

Re: Requete SQL sur 3 tables

Merci a tous ceux qui ont solutionnes la question sur la requete sur 3 tables.

Cordialement.

 

Pied de page des forums

Powered by FluxBB