#1 Mon 29 May 2006 16:41
- Sylvain M.
- Participant assidu
- Lieu: Saint-Pierre-des-Nids (53)
- Date d'inscription: 8 Sep 2005
- Messages: 995
Jointure tables : nombre de champs limités ?
Bonjour,
Je souhaite joindre 2 tables, l'une graphique (Polygones des communes), et l'autre uniquement données (importée depuis une table excel). Cette table de données comporte plus de 100 champs.
Je pensais utiliser une requête SQL, avec pour critère table1.INSEE = table2.INSEE (l'identifiant commun entre les 2 tables étant le code INSEE) et enregistrer le résultat dans une nouvelle table. Cependant, le résultat de cette requête ne contient que 8 champs...
Est-ce normal ? (limitation du nombre de colonnes dans les requêtes SQL ?).
Avez-vous une solution à ce problème, ou une méthode alternative pour joindre une table graphique à un tableau de valeurs contenant de nombreuses colonnes ?
Merci d'avance.
Sylvain
Sylvain M.
Hors ligne
#2 Mon 29 May 2006 17:00
- MathieuA
- Participant occasionnel
- Lieu: Villeurbanne
- Date d'inscription: 10 Nov 2005
- Messages: 18
Re: Jointure tables : nombre de champs limités ?
Bonjour,
la méthode que j'emploi est peut-être plus longue mais semble très efficace.
Il faut tout d'abord vérifer que tu as les même champs (même taille et même type) entre tes deux tables. (peut-être la cause de ton erreur).
Ensuite il faut faire des mises à jour colonne (voir menu : TABLE- Mettre à jour colonne) en réalisant une jointure (code INSEE = CODE INSEE).
Et il faut répéter cette mise à jour pour chaque champs et le tour est joué.
Bonne continuation
Mathieu
Hors ligne
#3 Mon 29 May 2006 17:17
- Sylvain M.
- Participant assidu
- Lieu: Saint-Pierre-des-Nids (53)
- Date d'inscription: 8 Sep 2005
- Messages: 995
Re: Jointure tables : nombre de champs limités ?
J'y avais bien pensé, mais comme je le précisais, j'ai plus de 100 champs, donc il faudrait que je fasse ça manuellement pour chaque ??? (créer d'abord tous les champs un à un dans la table graphique, puis importer toutes les colonnes une à une avec la jointure)
Je veux bien, mais je suis sûr qu'il y a une méthode plus rapide, non ?
Mais merci qd mêm pour votre réponse.
Sylvain
Sylvain M.
Hors ligne
#4 Mon 29 May 2006 17:40
Re: Jointure tables : nombre de champs limités ?
Hello,
Bizarre cette limitation... Vous avez effectué votre opération via la fenêtre MB ou par l'assistant ?
Au passage, si vous avez des opérations répétitives, je vous invite à jeter un coup d'oeil ici : Générateur de scripts de Richard Tremblay
Rob.
Hors ligne
#5 Tue 30 May 2006 09:29
- Sylvain M.
- Participant assidu
- Lieu: Saint-Pierre-des-Nids (53)
- Date d'inscription: 8 Sep 2005
- Messages: 995
Re: Jointure tables : nombre de champs limités ?
J'ai effectué l'opération très simplement via le menu sélection \ sélection SQL.
Puis j'ai spécifié les deux tables, le critère table1.INSEE = table2.INSEE (qui s'est d'ailleurs spécifié automatiquement), et j'ai laissé * dans la case Colonnes (j'ai également essayé d'ajouter unes à unes les colonnes dans cette case, mais cette case ne semble pas pouvoir contenir plus d'un certain nombre de caractères, correspondant à 8 champs dans mon cas...). A chaque fois, le résultat de ma requête se limite à 8 ou 9 champs.
Il me semble que mon problème est assez basique en matière de gestion de données, et je suis étonné que ce soit si difficile sous MapInfo. Mais peut-être que je ne connais pas une fonction de base !?
On m'a également proposé de passer par un lien ODBC entre ma table de données et mes objets. Je ne connais pas la démarche (je vais regarder), mais il me semble que c'est assez complexe (poour moi en tout cas !) pour une opération de base comme celle-ci.
Merci pour votre aide encore une fois, et longue vie au forum !
Sylvain
Sylvain M.
Hors ligne
#6 Tue 30 May 2006 09:44
Re: Jointure tables : nombre de champs limités ?
Hello,
Perso pour fusionner comme vous souhaitez le faire, je pencherai plutot pour passer en SQL dans la fenetre MapBasic. Ca ne m'a jamais posé de problème jusqu'à maintenant.
Testez un truc de ce genre :
Code:
Select * from table1, table2 where table1.insee = table2.insee in NewTable
Il ne reste plus qu'a enregistrer NewTable en dur.
Voili,
Robin.
Hors ligne
#7 Tue 30 May 2006 10:18
- jean-francois Behm
- Participant assidu
- Lieu: Toulouse
- Date d'inscription: 5 Sep 2005
- Messages: 212
- Site web
Re: Jointure tables : nombre de champs limités ?
Bonjour,
les noms de tes colonnes à joindre doivent être trop longs.
Il faudrait essayer d'ouvrir le fichier EXCEL sans cocher "titre au dessus de la selection" : tu auras des colonnes A,B,C,... et refaire la requete SQL avec comme jointure la lettre correspondant au champ INSEE.
Tiens-nous au courant
Hors ligne
#8 Tue 30 May 2006 10:54
- Sylvain M.
- Participant assidu
- Lieu: Saint-Pierre-des-Nids (53)
- Date d'inscription: 8 Sep 2005
- Messages: 995
Re: Jointure tables : nombre de champs limités ?
Décidément, je fini par croire que c'est ma version de MI 7.5 qui a un souci :
- j'ai essayé Select * from table1, table2 where table1.insee = table2.insee into NewTable : tjrs que 9 colonnes exportées.
- j'ai essayé avec un tableau excel et des nom de colonnes A,B,C,... (donc courts) : tjrs que 9 colonnes exportées
- j'ai essayé en enregistrant ma table excel (fichiers TAB + XLS + IND) sous une autre table MapInfo (fichiers TAB + DAT + IND) : idem...
Peut-être quelqu'un (de très gentil !) pourrait essayer sur sa machine si ça marche ? (Je pourrais envoyer les deux tables en question par e-mail)
Désolé d'être si insistant, mais j'espère enfin comprendre ce qui bloque...
Merci encore !
Sylvain
Sylvain M.
Hors ligne
#9 Tue 30 May 2006 12:30
- Maurice
- Membre
- Lieu: Montpellier
- Date d'inscription: 5 Sep 2005
- Messages: 5331
Re: Jointure tables : nombre de champs limités ?
Bonjour,
La dernière hypothèse est la bonne: il faut enregistrer en TAB...mais:
- attention aux noms qui seront tronqués à 10 caractères
- et surtout attention à la définition des champs, qui, depuis un XLS, se mettent systématiquement à 254 pour les caractères alors qu'il suffirait de 5 pour les INSEE commune par exemple. La taille du DAT étant limitée à 4000 Ko (je crois) ...ça bloque, surtout quand il y en a 100!!
On peut/doit définir ces champs lors de l'importation (MI78?) ou les redéfinir, après importation et réenregistrement en TAB, au minimum nécessaire.
MIEUX: passer par un DBF, qui ne nécessite pas d'enregistre en TAB car directement 'restructurable'
Puis select *....
A ta disposition si tu veux me passer les données par mail (zippées!)
Hors ligne