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 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 smile

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

 

Pied de page des forums

Powered by FluxBB