[SQL] jointure externe plusieurs tables
Résolu
mat_elot
Messages postés
137
Date d'inscription
Statut
Membre
Dernière intervention
-
Giorgiolino Messages postés 253 Date d'inscription Statut Contributeur Dernière intervention -
Giorgiolino Messages postés 253 Date d'inscription Statut Contributeur Dernière intervention -
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
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
A voir également:
- [SQL] jointure externe plusieurs tables
- Chkdsk disque dur externe - Guide
- Tables des matières word - Guide
- Ram externe - Forum Carte-mère/mémoire
- Appel externe c'est quoi - Forum telephonie fixe
- Batterie externe clignote ne charge pas - Forum Mobile
2 réponses
Bonjour,
Tu peux obtenir le résultat que tu veux en utilisant le code ci-dessous
Il faut bien sur remplacer col1 par le nom correct de chaque colonne dans chaque table.
A plus
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
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?
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.