[SQL] jointure externe plusieurs tables

Résolu/Fermé
mat_elot Messages postés 137 Date d'inscription dimanche 23 décembre 2007 Statut Membre Dernière intervention 12 janvier 2014 - 29 mai 2009 à 12:28
Giorgiolino Messages postés 253 Date d'inscription vendredi 15 mai 2009 Statut Contributeur Dernière intervention 2 mars 2015 - 12 juin 2009 à 11:00
Bonjour,

voila j'ai une table d'identifiant (que j'appelerai table générale), avec tous les individus exisants et une dizaine d'autres tables contenant une part différente ou non de ces indivius (identifiant et attribut).
La table générale comporte 399028 ligne et je cherche a créer un table totale comportant le meme nombre de ligne mais avec toutes les infos des autres tables (ma table finale aura donc des null).
J'ai donc fait une jointure externe (left) de ce style:

SELECT *
FROM ((t_gen left JOIN t1 ON [t_gen].id = [t1].id) left JOIN t2 ON [t_gen].id = [t2].id) left JOIN t3 ON [t_gen].id = [t3].id) .... ainsi desuite avec les autres tables.

Seulement au final j'obtient bien plus de 399028 lignes...
Qq 1voit il pourquoi cela ne fonctionne pas?

Merci de votre,

math_elot

2 réponses

Christounet Messages postés 1264 Date d'inscription mercredi 26 septembre 2007 Statut Membre Dernière intervention 29 juillet 2010 1 389
3 juin 2009 à 15:08
Bonjour,

Tu peux obtenir le résultat que tu veux en utilisant le code ci-dessous
select t_gen.id , t_gen.col1 ,
(select t1.col1 from t1 where t1.id = t_gen.id) ,
(select t2.col1 from t2 where t2.id = t_gen.id) ,
(select t3.col1 from t3 where t3.id = t_gen.id),
etc,...
from t_gen

Il faut bien sur remplacer col1 par le nom correct de chaque colonne dans chaque table.
A plus
2
Salut Christounet,

d'abord merci de ta réponse, ma requete est dans access et il me parle d'un exist.
je pense que ya moyen de faire un requete externe (left ou autre) sans utiliser tout ca non?
une idée?
0
Giorgiolino Messages postés 253 Date d'inscription vendredi 15 mai 2009 Statut Contributeur Dernière intervention 2 mars 2015 52 > mat_elot
12 juin 2009 à 11:00
Bonjour,

Effectivement c'est faisable avec une requête externe.
En écrivant LEFT JOIN tu faisais une requête interne (INNER par défaut).

En explicitant LEFT OUTER JOIN ça devrait aller mieux.

Ceci dit, il faut encore que tes critères de jointure soient pertinents...

Plus d'info ici --> https://sqlpro.developpez.com/cours/sqlaz/jointures/
Rubrique III-D-2. Mécanisme en jeu


Bon courage.
0
Personne pour me filer un petit coup de main please? toujours pas trouvé pour ca et ca doit etre tout bete en plus
0