#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.