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

Pour sécuriser votre compte sur les forums du GeoRezo, nous demandons de changer votre mot de passe.

Vous allez recevoir un message pour effectuer ce changement de mot de passe.

Merci de bien respecter les règles préconisées.

#1 Thu 12 April 2001 22:31

Vvestri
Invité

Astérisque et SQL

Grenoble, le 12 avril 2001

Bonjour a tous,

J'utilise frequemment les requetes SQL avec des jointures de tables et
j'aurais une demande a leur propos.

Je possede une Table A (aucune carto associee) contenant une dixaine de
champs, une table B (carto associee) contenant 2 champs. Ces derniers ce
retrouvent a l'identique dans la table B et servent a la jointure.
Actuellement j'effectue une requete SQL avec laissant un asterisque dans la
zone colonnes afin de recuperer toutes les informations. Cependant
aujourd'hui je souhaiterai recuperer uniquement les champs de la table A
puisque ceux de la table B s'y trouvent deja.

Je precise que ce type de requete est developpe dans MapBasic et qu'a aucun
moment je ne sais de combien la table A se compose de champs alors que la
table B n'aura toujours que 2 champs.

Quelqu'un a t il deja eu a faire a ce genre de problematique ?

Merci d'avance pour toutes vos idees


Veronique VESTRI
Ingenieur SIG
vvestri@texte-a-enlever.atmo-rhonealpes.org

 

#2 Tue 17 April 2001 22:30

Jacques Paris
Invité

Re: Astérisque et SQL

Bonjour,

J’etais en visite a Toronto pour une conference MapInfo ce qui explique le
retard a vous repondre alors que n’ai encore vu aucune reponse sur
mapinfo_fr.

J’ai identifie trois solutions possibles a votre probleme. La premiere est
entierement manuelle : laissez faire (* dans la boite colonnes) et modifier
la structure pour faire sauter les deux colonnes incriminees. La deuxieme
implique de programmer la « destruction » avec « Alter Table table_resultat
Drop colonne1, colonne2 », colonneX est le nom de la colonne X de B
prolonge » par _2 (il vaudrait mieux verifier la facon precise avec
laquelle MI renomme une colonne dont le nom existe deja)

La troisieme est pure programmation et consiste a recreer un enonce qui
serait de la forme « select tableB.col1, tableB.col2, … where… ». pour cela
il faut connaitre ncols (nombre de colonnes dans table B, avec
tableinfo(tableB, tab_info_ncols) ) et en construisant l’enonce comme une
chaine : (tableB est une variable caractere du nom de la table)

dim comm as string
comm=”select “+tableB +” “ +tableB+”.col1”
for I = 2 to ncols
comm=comm+”, ”+tableB+”.col”+str(I)
next
comm=comm + “ where….”
run command comm.

Dans votre cas, je favoriserais la deuxieme solution, la plus compacte et
certainement la plus rapide, puisque que les colonnes a supprimer sont
toujours les memes.

En ce qui concerne l’utilisation du Control Check Box, il faut bien s’
assurer d’utiliser « INTO Icheck » ou Icheck est dimensionne comme une
variable logique. Par la suite, il devrait suffire de faire « If Icheck
then …. operations a faire si l’option est choisie .. end if»

Jacques PARIS

jacques@texte-a-enlever.paris-pc-gis.com

 

Pied de page des forums

Powered by FluxBB