Nous utilisons des cookies pour vous garantir la meilleure expérience sur notre site. Si vous continuez à utiliser ce dernier, nous considèrerons que vous acceptez l'utilisation des cookies. J'ai compris ! ou En savoir plus !.
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 Wed 04 September 2013 15:40

jpsurf
Participant occasionnel
Date d'inscription: 11 Jun 2008
Messages: 23

[mapinfo 10.0] jointure entre deux tables

Bonjour à tous,

j'ai un petit problème sous mapinfo que je n'arrive pas à résoudre. J'ai deux tables que j'essaye de joindre via une requete sql.

la première, table1, est composée des champs :
- code_canton (texte - 2 caractères)
- code_dep (texte - 2 caractères)
- obj

Il s'agit d'une table géographique

la deuxième, table2, possède les champs :
- id_canton (texte -4 caractères) correspondant à la concatenation des champs code_dep et code_canton de table1
- donnee1
- ...

je souhaite via une requete sql joindre la colonne donnee1 de la table 2 à la table 1

J'ai essayé pas mal de chose qui ne marchent pas (message d'erreur de jointure) dont :

Code:

SELECT 
  table1.code_canton, 
  table1.code_dep, 
  table2.donnee1 
FROM table1, table2
WHERE 
  table1.code_canton=right$(table2.id_canton,2) AND
  table1.code_dep=left$(table2.id_canton,2)

ou encore

Code:

SELECT 
  table1.code_canton, 
  table1.code_dep, 
  table2.donnee1 
FROM table1, table2
WHERE 
  table1.code_dep+table1.code_canton=table2.id_canton

Est-il possible de faire une telle jointure et si oui comment pratique t'on ?

Merci d'avance pour votre aide

Dernière modification par jpsurf (Wed 04 September 2013 16:01)

Hors ligne

 

#2 Wed 04 September 2013 16:10

Spacejo
Membre
Lieu: Nancy
Date d'inscription: 17 Aug 2008
Messages: 2511

Re: [mapinfo 10.0] jointure entre deux tables

Salut,

Pourquoi ne pas créer un champ supplémentaire dans ta table1 qui sera la concaténation de code_canton & code_dep ?
Puis -->

Code:

Select * from Table1, Table2 where Table1.NoveauChamp=Table2.Id_Canton into Resultat

Tes tables jointes seront dans la table "Resultat"
Une question --> Quel est le libellé message d'erreur?
A+
Joël

Dernière modification par Spacejo (Wed 04 September 2013 16:59)

Hors ligne

 

#3 Wed 04 September 2013 22:42

jpsurf
Participant occasionnel
Date d'inscription: 11 Jun 2008
Messages: 23

Re: [mapinfo 10.0] jointure entre deux tables

Tout d'abord merci pour ta réponse.

Je ne souhaite pas créer un nouveau champ par pure fainéantise wink. Non, plus sérieusement l'objectif pour moi est de livrer un .wor à un utilisateur mapinfo qui ne possède pas les droits de modification sur la table, c'est pour ça que je partais plus sur une solution requete SQL et non vers un ADD COLUMN...

Je n'ai pas mapinfo sous la main mais le message d'erreur était du genre "critère de jointure incorrecte dans la clause where".

Dernière modification par jpsurf (Wed 04 September 2013 23:08)

Hors ligne

 

#4 Thu 05 September 2013 09:50

jpsurf
Participant occasionnel
Date d'inscription: 11 Jun 2008
Messages: 23

Re: [mapinfo 10.0] jointure entre deux tables

De retour devant mapinfo voici les précisions sur le message d'erreur :

mapinfo 10.0 a écrit:

Aucune jointure n'est spécifiée entre les tables 'table1' et 'table2'. Condition de jointure non valide dans la clause where

Hors ligne

 

#5 Thu 05 September 2013 13:36

Damien BEAUSEIGNEUR
Participant assidu
Lieu: meyzieu
Date d'inscription: 5 Sep 2005
Messages: 425

Re: [mapinfo 10.0] jointure entre deux tables

Bonjour,

Une petite question la deuxième table est elle une table géographique?
si oui table1.obj intersects table2.obj devrait être utile.

Sinon il faut passer par une query, une petite sélection préalable soit pour couper le champ id_canton en 2, soit pour concaténer les champs code_canton et code_dep en 1 seul.

il est possible de faire

Code:

select code_canton, code_dep, code_dep+code_canton as id_canton from table1 into selection1

et ensuite de se servir de selection1 pour faire la jointure entre la table1 et la table 2.

Code:

SELECT 
  table1.code_canton, 
  table1.code_dep, 
  table2.donnee1 
FROM table1, table2, selection1
WHERE 
  table1.code_dep = selection1.code_dep 
and table1.code_canton= selection1.code_canton
and table2.id_canton=select1.id_canton

La jointure étant directe elle sera donc considérée comme valide.

cordialement

Dernière modification par Damien BEAUSEIGNEUR (Thu 05 September 2013 13:36)

Hors ligne

 

#6 Thu 05 September 2013 18:54

Spacejo
Membre
Lieu: Nancy
Date d'inscription: 17 Aug 2008
Messages: 2511

Re: [mapinfo 10.0] jointure entre deux tables

Salut,

Dans un .wor un "Add column" te crée une colonne temporaire (peut être une solution ) et non un "Alter Table" qui te crée une colonne permanente.
Dans ton .wor tu pourrais créer une colonne temporaire (concaténation de tes 2 champs puis jointure).
Lors de la fermeture de tes tables --> elles se retrouvent leurs états initiales.
A consulter à ce sujet ---> http://www.google.fr/url?sa=t&rct=j … mp;cad=rja
En espérant orienter tes recherches
A+
Joël

Hors ligne

 

#7 Thu 05 September 2013 21:27

jpsurf
Participant occasionnel
Date d'inscription: 11 Jun 2008
Messages: 23

Re: [mapinfo 10.0] jointure entre deux tables

Merci à vous deux pour ces propositions, je vais les essayer dès demain matin et vous ferai un retour.
Pour Damien, ma deuxième table n'est pas géographique

Hors ligne

 

#8 Fri 06 September 2013 08:54

jpsurf
Participant occasionnel
Date d'inscription: 11 Jun 2008
Messages: 23

Re: [mapinfo 10.0] jointure entre deux tables

pour la solution que tu m'as proposée Spacejo, j'ai essayé de faire :

Code:

Add column table1 (id_canton char(5)) From table1 Set to code_dep+code_canton
Select * from table1, table2 where table1.id_canton=table2.id_canton into Selection

Le ADD COLUMN marche très bien mais la jointure entre le champ temporaire créé dans table1 et le champ dans table2 ne fonctionne pas. Le SELECT me renvoie le même message "Aucune jointure n'est spécifiée..."

pour la solution de Damien, même résultat.

là je commence à bloquer.

J'ai peut-être une autre piste : créer un mbx qui copiera la table "table1" en dur sur le poste de la personne qui utilisera le .wor, ajouter en dur un colonne a cette table et la remplir par la concaténation du champ code_dep et code_canton. J'intégrerai le mbx dans le wor avec un RUN APPLICATION

Dernière modification par jpsurf (Fri 06 September 2013 08:54)

Hors ligne

 

#9 Fri 06 September 2013 10:14

nicoboud
Membre
Lieu: Nantes
Date d'inscription: 12 Oct 2007
Messages: 860

Re: [mapinfo 10.0] jointure entre deux tables

Bonjour,

Je confirme malheureusement ces limitations de Mi : une jointure ne peut se faire sur des champs temporaires, ni sur une combinaison de champs.
La solution de la copie en local de ladite table devrait fonctionner.
Mais je reprends la première question qu'avait posé Spacejo dans le post #2 :pourquoi ne pas rajouter définitivement ce champ résultat de concaténation à la table initiale ?

Nicolas.


Co-modérateur du forum Mapinfo
Utilisateur Mapinfo et QGIS

Hors ligne

 

#10 Fri 06 September 2013 12:04

jpsurf
Participant occasionnel
Date d'inscription: 11 Jun 2008
Messages: 23

Re: [mapinfo 10.0] jointure entre deux tables

Pour plusieurs raisons :
1) cela demande de recréer ce champ à chaque nouvelle livraison
2) si monsieur X a besoin de tel champ concaténer que monsieur Y a besoin d'un autre champ concatener et ainsi de suite on en finit pas.
donc non je ne veux pas créer un champ avec la concatenation en dur.

Dernière modification par jpsurf (Fri 06 September 2013 12:05)

Hors ligne

 

#11 Fri 06 September 2013 15:13

nicoboud
Membre
Lieu: Nantes
Date d'inscription: 12 Oct 2007
Messages: 860

Re: [mapinfo 10.0] jointure entre deux tables

Donc si vous avez X monsieurs, vous allez créer X fois un un mbx dédié ?


Co-modérateur du forum Mapinfo
Utilisateur Mapinfo et QGIS

Hors ligne

 

#12 Fri 06 September 2013 17:36

jpsurf
Participant occasionnel
Date d'inscription: 11 Jun 2008
Messages: 23

Re: [mapinfo 10.0] jointure entre deux tables

mais j'en ai pour l'instant qu'un  et je pense qu'il sera le seul

Hors ligne

 

#13 Fri 06 September 2013 18:01

Spacejo
Membre
Lieu: Nancy
Date d'inscription: 17 Aug 2008
Messages: 2511

Re: [mapinfo 10.0] jointure entre deux tables

En respectant ton cahier des charges et s'en se lancer dans la création d'un .mbx.
Tu peux toujours créer un .wor avec:
Ouverture de table1, Table2
Création d'une table Table1Temp "save as de Table1"
Création du champ servant de jointure
Incrémentation de celui ci
Jointure
Ouverture de TablesJointes
Puis lors de la fermeture on efface TableTemp
Celà oblige à travailler toujours dans le même dossier et avoir toujours les mêmes noms de table pour Table1 et Table2.
A+
Joël

Hors ligne

 

Pied de page des forums

Powered by FluxBB