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