#1 Thu 01 September 2011 15:35
- CordialMan
- Juste Inscrit !
- Date d'inscription: 1 Sep 2011
- Messages: 4
jointure
Bonjour,
Je m'adresse à vous pour solliciter votre aide :
en fait, j'ai une table qui contient des colonnes suivantes:
1) non de chercheurs
2) laboratoire
3) nom de communes sur lesquelles il a travaillé
j'ai une table avec les communes de France (geofla)
par exemple, pour Mr X, il a travaillé sur cinq communes (j'ai pas fait chaque commune = un ligne, j'ai tous mis dans la même ligne en séparant avec une virgule... pour ne pas répéter le même chercheurs plusieurs fois (le nombre de communes étudiées)
le problème, c'est quand j'essaie de faire la jointure de deux tables citées en haut, il me prends juste la première commune de la ligne!
Y a t-il une manipe pour prendre toutes les communes séparées par des virgules, ou il faut absolument répéter les lignes (un ligne = une commune) ??
Je compte sur vous pour m'éclairer et je vous remercier d'avance
Cordialement
Hors ligne
#2 Thu 01 September 2011 16:08
- pierre agha
- Participant actif
- Lieu: TOULOUSE
- Date d'inscription: 15 Oct 2005
- Messages: 97
Re: jointure
bonjour
vous pouvez exporter votre table pour la traiter dans un tableur
1 - exporter la table au format XLS (table A)
2 - exporter la même table au format TXT (table B)
ouvrir table A et supprimer les colonnes avec les communes
importer, si besoin ne garder que les colonnes communes, dans excel la table B, avec comme spérateur de Champ, le signe ",".
copier ensuite lignes de A et les coller dans B
bon courage
Hors ligne
#3 Fri 02 September 2011 08:10
- nicoboud
- Membre
- Lieu: Nantes
- Date d'inscription: 12 Oct 2007
- Messages: 860
Re: jointure
Bonjour,
Dans le cas d'une relation de n à n, il y aura forcément une table contenant des doublons. En général on utilise une table de correspondance faisant le lien entre la table des chercheurs (un chercheur = 1 ligne) et la table des communes (une commune = 1 ligne).
Cette 3ième table dite de correspondance sera de la forme : une colone id_commune et une colonne id_chercheur. On y retrouvera forcément plusieurs fois la même commune (autant de lignes pour la commune 1 que de nombre de chercheurs y ayant travaillé) et plusieurs fois le même chercheur (autant de lignes pour le chercheur 1 que de communes dans lesquelles il a travaillé).
En utilisant le "group by" ou "grouper" et count(*) en SQL sur cette table de correspondance, vous pouvez facilement obtenir une table avec la liste des communes et le nombre de chercheurs y ayant travaillé, ou la liste des chercheurs avec le nombre de communes différentes dans lesquelles ils ont travaillé.
Tout dépend de votre objectif qui n'est pas expliqué ici ... (quelle représentation ou interrogation dans Mapinfo voulez-vous obtenir à la fin?)
Nicolas.
Co-modérateur du forum Mapinfo
Utilisateur Mapinfo et QGIS
Hors ligne
#4 Fri 02 September 2011 20:17
- CordialMan
- Juste Inscrit !
- Date d'inscription: 1 Sep 2011
- Messages: 4
Re: jointure
Bonsoir,
Merci Pierre et Nicolas pour vos réponses!
Pierre, désolé, mais je suis débutant en Mapinfo, donc pas trop compris ta réponse (ca vient de moi)
Nicolas : j'ai fais l'inventaire des travaux qui ont été réalisé sur la biodiversité et j'ai élaboré une base de données avec :
colonne : nom de chercheur
colonne : localisation (les communes concernées par l'étude)
souvent, le même chercheur travaille sur plusieurs communes en même temps/même étude.. donc dans la même cellule je met les noms de toutes les communes en les séparant par des virgules..
mon Objectif : faire une carte ( sur le fond de carte communes de France) et dire : dans la zone X on a une étude, dans la zone Y ya rien... etc ... en gros : géoréférencer les études réalisées ...
mais tout d'abord, il faut que joindre le fichier Excel (base de données) à la table (commune de france = géofla)
Comment dois-je faire svp ?
Merci d'avance
Hors ligne
#5 Mon 05 September 2011 09:55
- nicoboud
- Membre
- Lieu: Nantes
- Date d'inscription: 12 Oct 2007
- Messages: 860
Re: jointure
J'ai bien peur que tu doives refaire ta BDD afin d'avoir : 1 table (Etude/Chercheur), 1 table (Etude/commune)
Tu ne peux pas échapper au fait d'avoir des doublons, mais ce n'est pas gênant par la suite.
Pour ne pas ressaisir, tu peux utiliser le conseil de Pierre afin de séparer tous les noms de commune concernées par une étude (avoir un seul nom de commune par champ).
1- Enregistre ton fichier initial en .txt ou .csv, puis réimporte le dans excel en spécifiant comme séparateur de champ ",". Tu obtiens ainsi pour une étude autant de colonnes que de communes concernées.
2- Ensuite, pour chaque étude copies ces colonnes suplémentaires et fais un "collage spécial" pour les transposer (= les disposer en colonne).
Une fois que tu as quelque chose du type :
table1:
ETUDES | CHERCHEURS
etude1 | chercheur1
etude1 | chercheur2
etude1 | chercheur3
etude2 | chercheur1
etude2 | chercheur4
etude2 | chercheur5
...
table2
ETUDES | COMMUNES
etude1 | commune1
etude1 | commune2
etude1 | commune3
etude2 | commune1
etude2 | commune4
etude2 | commune6
...
Ouvre ces tables dans Mapinfo (ouvrir table... fichiers de type Microsoft Excel).
Fais une sélection SQL sur la table table2 en spécifiant :
- dans "Colonnes" : COMMUNES, Count(*)"NbEtudes"
- dans "Tables" : table2
- dans "Critères" : rien
- dans "Grouper par colonnes" : COMMUNES
Tu obtiendra une sélection sans doublons avec pour chaque commune, le nombre d'études. Enregistre cette sélection avec menu Fichier> Enregistrer table sous...
Ouvre cette nouvelle table dans ta session Mapinfo.
Ensuite, tu peux faire une analyse thématique par jointure sur la table commune de géofla et à partir des données précédemment produite (table NbEtudes/Commune) :
menu Carte>Analyse thématique...
dans variable, choisir "jointure"..
etc.
A toi de jouer
Nicolas.
Co-modérateur du forum Mapinfo
Utilisateur Mapinfo et QGIS
Hors ligne
#6 Wed 07 September 2011 00:00
- CordialMan
- Juste Inscrit !
- Date d'inscription: 1 Sep 2011
- Messages: 4
Re: jointure
Bonsoir Nicolas,
Tout à d'abord, je tenais à te remercier infiniment pour tes réponses !
j'ai une autre question stp : Je dois faire des analyses thématiques sur l'ensemble du bassin versant de la Loire ( fond de carte geofla avec 5433 communes ) mais quand j'essaie, il me dit : " il y a trop de valeurs individuelles : 5433. Maximum permis : 1600 ''
Comment faire stp ?
Merci de me répondre
Hors ligne
#7 Wed 07 September 2011 10:22
- nicoboud
- Membre
- Lieu: Nantes
- Date d'inscription: 12 Oct 2007
- Messages: 860
Re: jointure
Cette limite de 1600 ne concerne que les analyse thématiques dites "valeurs individuelles".
Tu ne l’atteins que si tu veux représenter chaque commune avec une couleur différente (mais quel intérêt ?... ce n'est surement pas ton objectif...).
Il faut donc faire cette analyse sur ta table geofla, mais pas sur les noms des communes, mais bien sur la variable qui t'intéresse : le nombre d'études par commune ?
Comme tu ne l'as pas directement dans ta table geofla, c'est la raison pour laquelle je j'ai conseillé de faire une analyse par jointure (cf mon post précédent).
Et pour obtenir cela, tu ne pourras pas te passer de consulter l'aide de mapinfo ou rechercher sur le net... (recherche sur georezo) car je ne vais pas te faire un cours Mapinfo dans ce forum...
Nicolas.
Co-modérateur du forum Mapinfo
Utilisateur Mapinfo et QGIS
Hors ligne
#8 Fri 09 September 2011 11:46
- michelbgy
- Participant actif
- Date d'inscription: 9 Feb 2010
- Messages: 77
Re: jointure
bonjour
si j'ai bien compris la question initiale, il s'agissait de compter le nombre d'études par commune, (un chercheur pouvant avoir fait plusieurs études mais est seul sur une étude) c'est donc très simple:
Une fois la table exportée dans un tableur, il suffit de compter le nombre d'occurences de chaque nom de commune dans tous le champs "communes"
formule matricielle : {=SOMME(SI(ESTERREUR(CHERCHE(commune1;Champscommunes));;1))}
à étendre verticalement en parallèle de la liste des communes
exporter le résultat en table pour renseigner la table géofla (ou faire l'analyse par jointure)
Hors ligne