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 20 September 2007 17:15

Miss T.
Participant assidu
Lieu: En pleine amazonie...
Date d'inscription: 17 Oct 2005
Messages: 294

Concaténation

Bonjour à tous,

Question bête: comment concaténer les données de plusieurs colonnes? ==> Les doigts dans le nez.
Question à 2 euros: comment concaténer les données d'une même colonne quand les points sont redondants (sauf 2 champs)?

Explication: j'ai reçu un jeu de données où les points se superposaient mais où les données sont différentes.
Ce que je voudrais c'est une requête de mise à jour du genre:
Si la localisation est la même, et que la colonne "truc" a la même valeur alors concatène la colonne "machin" dans un seul enregistrement.

exemple de 3 points (qui se superposent) :
ID                     localisation              truc                machin
----------------------------------------------------------------------------
1                          Trifouilli                truc1              chocolat
2                          Trifouilli                truc2              poulet
3                          Trifouilli                truc1              camembert barraqué

après requête donnent: (on se fout de l'ID final)
ID                     localisation              truc                machin
----------------------------------------------------------------------------
13                        Trifouilli                truc1              chocolat; camembert barraqué
2                          Trifouilli                truc2              poulet

(J'espère que j'aurai été assez claire dans mes explications...)

Une idée?
Géomatiquent vôtre...
Miss T.

Hors ligne

 

#2 Thu 20 September 2007 21:58

Maurice
Membre
Lieu: Montpellier
Date d'inscription: 5 Sep 2005
Messages: 5331

Re: Concaténation

Bonjour
J'adore l'humour des bords de l'étang de Thau ...
Je suis d'avis de simplement rendre à Excel ce qu'il sait faire (emploi de conditions dans les formules) quand le pauvre MI doit appeler MapBasic à la rescousse pour le même résultat...
Exemple après un exportation de la table en dbf, sous un autre nom:
sous Excel, après un tri sur localisation et truc, appliquer à une 5° colonne la formule
=SI(ET(LC2=L(1)C2;LC3=L(1)C3);CONCATENER(LC4;";";L(1)C4);SI(LC2=L(-1)C2;SI(LC3=L(-1)C3;"F";LC(4));LC4))
(nb: sur la première ligne, puis recopier vers le bas ... et faire la dernière ligne à la main, j'ai pas le temps de peaufiner smile)
Copier et collage spécial valeur pour finir. Enregistrer en dbf (attention à la zone à définir en base_de_données: 5 colonnes!!)
Une jointure avec la table d'origine sur le ID nous donnera tout autant de points, mais avec en plus le bon attribut
Il suffit enfin de sélectionner les points ayant "F" en colonne 5 et de les supprimer pour ne garder que les "utiles"

Hors ligne

 

#3 Sat 22 September 2007 10:45

Maurice
Membre
Lieu: Montpellier
Date d'inscription: 5 Sep 2005
Messages: 5331

Re: Concaténation

Pas de nouvelle = bonne nouvelle ??

Hors ligne

 

#4 Mon 24 September 2007 11:00

Olivier T
Participant actif
Date d'inscription: 31 May 2006
Messages: 71

Re: Concaténation

Bonjour,

le produit catésien de la table peut peut être vous aider

En ouvrant une copie de la tabe et en la croisant sur elle même, on devrait arriver à vos souhaits

Code:

Select Sans_nom.id, Sans_nom.loc, Sans_nom.truc, Sans_nom.machin,Sans_nom.machin+Copie_de_Sans_nom.machin from Sans_nom, Copie_de_Sans_nom where Sans_nom.loc=Copie_de_Sans_nom.loc and Sans_nom.truc=Copie_de_Sans_nom.truc group by Sans_nom.truc into Selection
Browse * From Selection

à creuser

bonne journée

Hors ligne

 

#5 Mon 24 September 2007 13:05

Miss T.
Participant assidu
Lieu: En pleine amazonie...
Date d'inscription: 17 Oct 2005
Messages: 294

Re: Concaténation

Merci pour cette réponse Maurice mais je pensais avoir la possibilité de faire ça sous mapInfo, quitte à passer par la fenêtre MapBasic (même pas peur! j'ai fait du MapBasic il y a quelques années mais il va me falloir quelques rappels (no souçailles! Ca va vite revenir)...)
Genre si "count(*)  GROUP BY truc, localisation" est sup. à 1, alors la table (ou nouvelle table) garde le 1er enregistrement avec truc et localisation et il ajoute à la colonne machin toutes les valeurs des autres enregistrements (en les supprimant pour virer les redondances).

Je pensais faire ça sous MapBasic pour éventuellement en faire un mbx "anti-redondance" bien barraqué.

PS: tu connais l'humour Thausien?

Hors ligne

 

#6 Mon 24 September 2007 13:19

Maurice
Membre
Lieu: Montpellier
Date d'inscription: 5 Sep 2005
Messages: 5331

Re: Concaténation

Pas de problème !!
C'est faisable en mbx, mais à mon avis pas vraiment trivial !!

ps: l'humour Thausien rayonne jusqu'à Montpellier smile

Hors ligne

 

#7 Mon 24 September 2007 19:36

Miss T.
Participant assidu
Lieu: En pleine amazonie...
Date d'inscription: 17 Oct 2005
Messages: 294

Re: Concaténation

Je vais essayer ça. Merci Olivier.

Hors ligne

 

#8 Mon 24 September 2007 21:45

Maurice
Membre
Lieu: Montpellier
Date d'inscription: 5 Sep 2005
Messages: 5331

Re: Concaténation

Le produit cartésien d'Olivier T marche en partie puisque la colonne machin sera répétée même si il y a une seule occurrence de localisation+truc ... et ne prendra pas en compte les cas où il y a une seule occurrence de localisation
Ce dernier "défaut" peut être corrigé en ajoutant Sans_nom.loc à la clause Group By
Il faut trouver un truc pour nettoyer le premier défaut, genre sélection des cas où la première moitié à gauche est égale à la seconde moitié à droite, puis remplacer la première moitié par "vide"...
nb: on obtient toujours un tableau de données, qu'il faudra joindre à la table de points, puis il faudra supprimer les points où machin+machin est vide
ps: tout ça en mbx, comme je disais: pas infaisable mais assez "coton" smile

Hors ligne

 

#9 Wed 26 September 2007 17:01

Miss T.
Participant assidu
Lieu: En pleine amazonie...
Date d'inscription: 17 Oct 2005
Messages: 294

Re: Concaténation

Je vous avoue messieurs que je n'ai pas eu le temps de tester... Bon sang! Pourquoi les journées sont si courtes?!
Je vous tient au courant dès que je peux m'y coller...

Hors ligne

 

#10 Thu 27 September 2007 09:53

lennydolle
Juste Inscrit !
Lieu: Nantes
Date d'inscription: 6 Sep 2007
Messages: 1

Re: Concaténation

Bonjour

J'ai bien lu les messages récents sur la concaténation sous MI ou Excel mais je rencontre qq soucis pour appliquer ces formules... surtout sous excel d'ailleurs.

Voici mon fichier et ce que je souhaite faire
    Code com Nom de la commune        NOM_GARE
1    89001    ACCOLAY                                    ACCOLAY
2    89441    VERMENTON                    ACCOLAY
3    21005    AISEREY                                    AISEREY
4    21067    BESSEY-LES-CITEAUX    AISEREY
5    21319    IZEURE                                    AISEREY
6    89004    AISY-SUR-ARMANCON    AISY
7    89296    PERRIGNY-SUR-ARMANCON    AISY
8    21530    ROUGEMONT                    AISY

J'aimerais obtenir une ligne par Nom de gare avec un champ où serait listé toutes les communes désservies
soit pour la gare ACCOLAY un champ avec les noms de com ACCOLAY et VERMENTON

MErci pour vos éclaircissements

Hors ligne

 

#11 Thu 27 September 2007 12:28

Maurice
Membre
Lieu: Montpellier
Date d'inscription: 5 Sep 2005
Messages: 5331

Re: Concaténation

Bonjour
J'ai déplacé votre message
C'est du boulot pour Excel, pas pour MapInfo (à mon sens)
D'abord un rapport de tableau croisé dynamique, puis une (ou deux) formules pour faire une "belle" concaténation
Je joins le classeur Excel qui explicite tout ça (les formules y figurent)
Bien sur en fonction du nombre de gares, la formule risque de devenir trop longue. Pour cette méthode il faudra découper en lots à traiter
Mais il y a peut être des solutions plus élégantes ....


Fichier(s) joint(s) :
Pour accéder aux fichiers vous devez vous inscrire.

Hors ligne

 

Pied de page des forums

Powered by FluxBB