#1 Thu 30 November 2006 23:01
- fran
- Participant occasionnel
- Date d'inscription: 5 Sep 2005
- Messages: 13
selection d'objets a l'interieur d'un rang altitudinal
Bonjour a tous,
J'essaie de selectionner les polygones d'une table qui sont a l'interieur de certains rangs altitudinaux (materialisés par une table de contours polygonaux, génerée depuis une grille avec vertical mapper)
Je tente la syntaxe suivante (je l'ai recopiée telle quelle apparait dans la fenetre MapBasic):
Select * from ma_table_poly , ma_table_altitude_poly where ma_table_poly.Obj within ma_table_altitude_poly.Obj where ma_table_altitude_poly.Champ_alti between 2100 and 2400
je coche "verifier" du menu SQL, réponse: "La syntaxe est correcte"
Pourtant, lorsque je lance la requete, j'obtiens le message d'erreur suivant:
"Aucune jointure n'est spécifiée entre les tables ma_table_poly et ma_table_altitude_poly. Condition de jointure erronée dans la clause Criteres(Where)"
N.B. : Mes 2 tables n'ont pas de colonnes communes sémantiques, d'ou je suppose l'origine du retour d'erreur "aucune jointure..."
Merci d'avance pour ceux/celles qui voudront bien m'aider a resoudre ce probleme
Jean Francois
Hors ligne
#2 Fri 01 December 2006 08:46
- Maurice
- Membre
- Lieu: Montpellier
- Date d'inscription: 5 Sep 2005
- Messages: 5331
Re: selection d'objets a l'interieur d'un rang altitudinal
Bonjour,
Le début est bon...après ça cloche!
Select * from ma_table_poly , ma_table_altitude_poly where ma_table_poly.Obj within ma_table_altitude_poly.Obj AND ma_table_altitude_poly.Champ_alti between 2100 and 2400
Comme pour conduire, on a droit qu'à un where
Hors ligne
#3 Fri 01 December 2006 09:21
- CRIGBAB
- Participant assidu
- Lieu: Bayonne
- Date d'inscription: 14 Nov 2005
- Messages: 180
Re: selection d'objets a l'interieur d'un rang altitudinal
Bonjour à tous
voici une solution pour réaliser cette requete
Select * from ma_table_poly where obj within any (select obj from ma_table_altitude_poly where champ_alti between 2100 and 2400)
Dans ce cas tout fonctionne et vous ne récupérez que les champs de la table ma_table_poly
Pour arriver à obtenir des informations de ma_table_altitude_poly dans la table poly il faut d'abord faire (pour toute la table ma_table_poly) un ajout de colonne avec une requete sans le second where de votre requete. ensuite vous refaite une simple selection sur le champ altitude de la table ma_table_poly complétée temporairement.
Attention toutefois aux différentes contraintes de jointures géographiques lors de l'ajout de colonnes.
En effet dans l'outil "Mettre à jour colonne" MI ne propose que les options contains ou intersects et pas l'option Contains entire donc il faut passer par des commandes sql écrites à la main pour ce cas ou par une succession de commandes.
Bonne journée
JP LARTIGAU
Hors ligne