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 Tue 13 April 2004 17:50

Antonin Rivat
Invité

Champs dans une requete SQL

Bonjour,
Je souhaite determiner pour un reseau quelle est la longueur de reseau
contenue dans les mailles d'un cadastre. Je calcule la longueur du reseau
contenu dans la maille du cadastre a l'aide de la fonction:
Objectlen(Overlap(reseau.obj, cadastre.obj), Km ). (1)
Pour bien faire il faudrait donc que j'ajoute ce champs calcule (1) aux
champs deja existants dans ma table reseau. Pour realiser cela je veux donc
faire une selection SQL dans laquelle la formule (1) serait un champ
calcule de la table resultante.
Mon probleme reside principalement dans le fait que je souhaite ajouter le
champ dans lequel je vais effectuer le calcul dans une table contenant un
nombre important de champs.
Lorsque l'on souhaite ajouter l'integralite des champs d'une table dans le
resultat d'une requete il est possible d'utiliser le * . Mais lorsque a ces
champs nous voulons ajouter un champ supplementaire je ne connais que
l'option qui consiste a rajouter les uns apres les autres tous les champs
de la table. Or vu le nombre de champs de la tablea reseau je ne peux pas
faire cette operation. Quelqu'un connait il une methode qui me permettrait
de realiser une requete SQL en ajoutant assez simplement un champ calcule.
Voila je sais pas si je suis suffisament clair mais en tout ca si vous avez
des idees elles sont les biens venues.
Cordialement
Antonin Rivat

 

#2 Tue 13 April 2004 17:50

Roger Verdie
Invité

Re: Champs dans une requete SQL

Vous pouvez tres bien mettre *, nom de n'importe quel champ. Vous pouvez meme afficher plusieurs fois le meme champ
par ex
select *, Objectlen(Overlap(reseau.obj, cadastre.obj), "Km") "toto" from table
où toto est le nom donne a la colonne du champ calcule

 

#3 Wed 14 April 2004 08:41

Antonin Rivat
Invité

Re: Champs dans une requete SQL

Quelle version de MI avaez vous? La mienne me donne un message d'erreur des que j'insere une ponctuation apres le * .
De plus la note mapbasic m'indique : Note that the expression_list may include either an asterisk or a list of
column expressions, but not both. If an asterisk appears following the keyword Select, then that asterisk must be the only thing in the expression_list. In other words, the following statement would not be legitimate:
Select *, object From world  ' this won't work!
Peut etre est ce la meme chose sous MI.
Cordialement

 

#4 Thu 15 April 2004 10:09

Pascal Geraut
Invité

Re: Champs dans une requete SQL

Bonjour
Je confirme on ne peux pas mettre *, nom_champ dans une requete SQL.
Si tu ne veux pas te retaper toute la serie, je ne vois que le passage par
la mise a jour de table (mais je me trompe peut-etre).
Voila ce que je tepropose
Ta requete SQL devait etre du type :
Select ch1;ch2;ch3;etc...;Sum(objectlen(Overlap(lig.obj, pol.obj), km ))
from pol, lig where pol.Obj intersects lig.Obj group by pol.ident into Selection
ou pol represente des polygones et lig des polylignes.
La mise a jour de table suivante donne le meme resultat dans le fenetre mapbasic :
Add Column pol (longueur )From lig Set To sum(ObjectLen(Overlap(lig.obj,
pol.obj), km )) Where intersects

reste a sauver la table.

Cordialement

 

Pied de page des forums

Powered by FluxBB