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

GEODATA DAYS 2024

#1 Mon 30 April 2007 20:53

hanczyk
Participant assidu
Lieu: Châlons-en-Champagne
Date d'inscription: 21 Apr 2006
Messages: 596

Sql

MapInfo 7.8
2 tables
CONSTRUCTION_LINEAIRE
TRONCON_ROUTE

SQL pour selection :
CONSTRUCTION_LINEAIRE.Obj Intersects TRONCON_ROUTE.Obj and TRONCON_ROUTE.Classement ="autre classement"
ça marche mais prend tous les objets de CONSTRUCTION_LINEAIRE

le champ "NATURE" de la table "CONSTRUCTION_LINEAIRE" identifie le type (exemple "PONT").
le champ "Classement" de la table "TRONCON_ROUTE" identifie le type (exemple "autre classement").

Comment sélectionner les ponts qui ont une intersection avec les objets de la table "TRONCON_ROUTE" ayant comme type "autre classement".


Jean-Marc Hanczyk

Hors ligne

 

#2 Mon 30 April 2007 21:55

Maurice
Membre
Lieu: Montpellier
Date d'inscription: 5 Sep 2005
Messages: 5331

Re: Sql

Ben .. un petit AND de plus genre AND CONSTRUCTION_LINEAIRE.NATURE="PONT"
ou une forme qui risque d'être plus rapide:
Select * from CONSTRUCTION_LINEAIRE where NATURE="PONT" and obj intersects any (select obj from TRONCON_ROUTE where Classement ="autre classement")

Hors ligne

 

#3 Mon 30 April 2007 22:24

hanczyk
Participant assidu
Lieu: Châlons-en-Champagne
Date d'inscription: 21 Apr 2006
Messages: 596

Re: Sql

merci et ça marche. mon erreur était la suivante :

mon SQL erroné
CONSTRUCTION_LINEAIRE.Obj Intersects TRONCON_ROUTE.Obj and TRONCON_ROUTE.Classement ="autre classement"

la solution
CONSTRUCTION_LINEAIRE.Obj Intersects TRONCON_ROUTE.Obj and TRONCON_ROUTE.Classement ="autre classement" AND CONSTRUCTION_LINEAIRE.NATURE="PONT"

effectivement la syntaxe suivante fonctionne mais il faut mettre seulement dans table : CONSTRUCTION_LINEAIRE 
NATURE="PONT" and obj intersects any (select obj from TRONCON_ROUTE where Classement ="autre classement")

encore merci


Jean-Marc Hanczyk

Hors ligne

 

#4 Tue 01 May 2007 19:44

Maurice
Membre
Lieu: Montpellier
Date d'inscription: 5 Sep 2005
Messages: 5331

Re: Sql

Merci pour la synthèse
Si les tables sont volumineuses (et que vous avez le temps) ça serait bien de voir s'il y a une différence sensible entre les deux syntaxes: celle qui implique 2 tables et celle qui n'en appelle qu'une, l'autre étant citée dans une sous-sélection...
MI a encore des progrès à faire sur les sélections spatiales et il est toujours utile de trouver des syntaxes qui le "boostent" un peu !!

Hors ligne

 

#5 Wed 02 May 2007 21:17

hanczyk
Participant assidu
Lieu: Châlons-en-Champagne
Date d'inscription: 21 Apr 2006
Messages: 596

Re: Sql

si votre question concerne le temps de réponse je n'ai pas trouvé de vrai différence.
par contre j'ai rencontré un petit problème avec celle de la sous sélection après un arrêt inopiné du traitement lors du renouvellement de l'opération.
je m'explique :
j'ai lancé la requête
arrêt du traitement inopiné
j'ai fermé MI
j'ai relancé le même traitement et là MI planté

le problème : un fichier index a été créé et en le supprimant j'ai pu obtenir le traitement.

par contre j'ai utilisé cette solution pour introduire une troisème table pour finaliser ma recherche.
mon objectif était : sélectionner les ougrages de type "PONT" croisement avec les routes de type "autre classement" d'un territoire connu subdivisition d'un département.
3 tables
- CONSTRUCTION_LINEAIRE ( volume MAP 574 ko - DAT 380 ko) Bd Topo IGN®
- Contour_UT51 ( volume MAP 78 ko - DAT 1 ko) Bd Carto IGN®
- TRONCON_ROUTE (MAP 9 563 ko - DAT 14 751 ko) Bd Topo IGN®
le temps de traitement assez rapide mais non chronométré)
ci joint la requête SQL
PS : je ne suis pas un maître du SQL alors pouvez-vous me corriger sur celle-ci, j'ai procédé au traitement plus manuel (table créée) je trouve le même résultat à savoir 1217 PONTS.


Fichier(s) joint(s) :
Pour accéder aux fichiers vous devez vous inscrire.

Jean-Marc Hanczyk

Hors ligne

 

#6 Thu 03 May 2007 09:44

Maurice
Membre
Lieu: Montpellier
Date d'inscription: 5 Sep 2005
Messages: 5331

Re: Sql

Bonjour,
Elle marche, elle est "rapide" (bon, les tables ne sont pas trop lourdes...) et elle donne le bon résultat = elle est bonne smile

Hors ligne

 

#7 Thu 03 May 2007 21:55

hanczyk
Participant assidu
Lieu: Châlons-en-Champagne
Date d'inscription: 21 Apr 2006
Messages: 596

Re: Sql

merci


Jean-Marc Hanczyk

Hors ligne

 

Pied de page des forums

Powered by FluxBB