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 07 December 2004 18:06

Y Abdelh
Invité

Requete SQL

De: Yasmine Abdelhak
Bonjour tout le monde!
Une petite question simple. quelle est la requete permettant d'obtenir la liste des objets ayant une valeur de champ identique (mais sans preciser la valeur de ce champ). En fait sur un gd nombre de polygones, je veux reperer les quelques polygones ayant une meme valeur pour un des champs.
En esperant que ma question est comprehensible.
Merci d'avance et bonne continuation a tous.

Yasmine Abdelhak

 

#2 Fri 10 December 2004 14:45

Bizet Remi - RBizet
Invité

Re: Requete SQL

Bonjour,

Pour le faire par SQL,
Vous devez obligatoirement proceder en 2 etapes, MapInfo n'acceptant pas les
clauses Group au sein d'une sous-selection:

1-dresser la liste des valeurs presentes et le nombre de leurs presence;
2- selectionner les enregistrements correspondants aux valeurs presentes
plusieurs fois ces valeurs.

1-par exemple pour les enregistrements de la table Test, pour les valeurs
deu champ THEMES :
Select THEMES, Count(*) nb_pres from Test group by THEMES order by
nb_pres desc,THEMES into S_listevaleurs

11-Enregistrer la table S_listevaleurs sous le nom Liste_Valeurs.Tab; ouvrir
la table Liste_Valeurs.Tab.

2-selectionner les enregistgrements denot la valeur testee est presente
plusieurs fois :
Deux possibilites :
a) avec une sous selection
plus rapide, mais sans indication du nombre d'occurrences, et saisie
manuelle de la sous selection dans la boite de dialogue SQL :

Select * from Test where THEMES in (Select THEMES from Liste_Valeurs where
nb_pres>1 into Selection) order by THEMES into S_Liste_1

b) avec un critere de jointure entre les 2 tables :
plus long a l'execution, mais indication du nombre total
d'occurrences de la valeur pour chaque enregistrement, et possibilite de
trier le resultat en fonction de ce dernier.

Select * from Test, Liste_Valeurs where Test.THEMES = Liste_Valeurs.THEMES
and Liste_Valeurs.nb_pres>1 order by Liste_Valeurs.nb_pres desc,
Liste_Valeurs.THEMES into S_Liste_2

Autre possibilite,
apres avoir execute la selection S_listevaleurs (etape 1): l'utiliser pour
ajouter une colonne temporaire comportant le nombre d'occurrences, puis
selectionner les enregistrements correspondant a une valeur d'occurences
superieure a 1.
avantage : pas d'enregistrement physique de la liste, indication du
nombre d'occurrences de la valeur pour chaque enregistrement,
Inconvenient : creation d'une colonne temporaire dans le document pour la
table testee.
21- Ajouter une colonne temporaire contenat le nombre d'occurrences :
Menu Table / Mettre a jour colonne :

Table a mette a jour : Test
Utiliser une colonne de la table : S_listevaleurs
Jointure ... :
ou la colonne THEMES de la table Test
correspond a THEMES de la table S_listevaleurs
Colonne a mettre a jour : Ajouter une colonne temporaire
Calculer : Valeur
De la colonne jointe : nb_pres
OK

(Ou dans la fenetre MapBasic : Add Column Test (nb_pres Integer)From
S_listevaleurs Set To nb_pres Where THEMES = THEMES Dynamic)

22- Selectionner les enregistgrements denot la valeur testee est presente
plusieurs fois :

Select * from Test where nb_pres > 1 order by nb_pres desc,THEMES
into S_Liste_3

Cordialement,

Remi Bizet    Consultant Formateur
Courriel : remi.bizet@texte-a-enlever.acxiom.com
Acxiom France http://www.claritas.fr
http://www.acxiom.fr

 

Pied de page des forums

Powered by FluxBB