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 Mon 05 May 2003 19:43

Maurice Nadal
Invité

Bon usage de SQL

De: Maurice Nadal
Bonjour, et pardon si c'est un peu long
Pour resumer: a partir des tables communes, rivieres et parcelles je cherche les parcelles intersectant la commune patelin et intersectant un buffer de 100 m autour des rivieres. Par les voies graphiques j'obtiens 200 parcelles. Si je passe la requete suivante: Select parcelles.ID from parcelles,communes where communes.Nom= patelin and parcelles.obj intersects communes.obj and parcelles.obj intersects any (select buffer (rivieres.obj,6,100, m ) from rivieres) order by parcelles.ID into selection
j'obtiens visuellement les memes parcelles mais il y en a 250: dans la table de donnees de cette query, si je clique certains des 250 enregistrements il se selectionne 2,3 voire 5 enregistrements.
Si j'enregistre ma query j'ai toujours 250 parcelles, mais il n'y a plus ce comportement de selection multiple .
Pour enregistrer mes 200 bonnes parcelles, je n'ai d'autre solution que de dire, dans la table de donnees parcelles, inverser selection 2 fois, puis enregistrer selection: 200 parcelles simples sont alors enregistrees.
Pourquoi ma requete SQL multiplie-t-elle certaines parcelles, et y a -t-il une requete qui mene directement a 200 parcelles enregistrables?
Merci de vos lumieres

 

#2 Tue 06 May 2003 10:05

RAVENET Eric
Invité

Re: Bon usage de SQL

Bonjour,
Je ne sais pas trop pourquoi (la sous-selection serait-elle en cause ?),
mais visiblement, certaines parcelles sont selectionnees plusieurs fois par
votre requete. Est-ce que rajouter un group by pour regrouper le resultat
de la requete par parcelles ne permettrait pas de resoudre le probleme ?
Je proposerai de rajouter group by parcelles.ID
Bonne chance

 

#3 Tue 06 May 2003 16:44

Pascal Geraut
Invité

Re: Bon usage de SQL

Bonjour
le pb vient probablement de la sous-selection qui renvoie un buffer pour
chaque segment de riviere, ce qui amene MIW a selectionner n fois la meme
parcelles pour une riviere. Ensuite tout s'enchaine et conduit a des
contorsions d'inversion etc ...
En fait il vaut mieux reprendre au depart, creeer un tampon avant de faire
la requete SQL avec UN SEUL objet tampon pour les rivieres et faire une
requete de type :
Select * from parcelle,communes where communes.id= toto and parcelle.obj
intersects communes.obj and parcelles.Obj Intersects (select obj from
tampon_riviere) into selparc
tampon_riviere etant le tampon cree.

S'il y a mieux je suis preneur
Cordialement

Pascal GERAUT
DIOG - ITS
CETE de l'Ouest

 

#4 Tue 06 May 2003 18:14

Maurice Nadal
Invité

Re: Bon usage de SQL

Merci a Michel Wurtz (meme si son hypothese ne marche pas) et a Pascal GERAUT.Ce dernier a raison: si j'assemble rivieres en un seul objet avant de passer ma requete SQL (ce qui ne cree qu'un seul buffer), j'obtiens bien les 200 enregistrements souhaites, sans bafouillage en 250 enregistrements dans la query.
Maurice Nadal

 

Pied de page des forums

Powered by FluxBB