Rechercher : dans
Par :

[SQL] jointure externe plusieurs tables

Dernière réponse le 12 jun 2009 à 11:00:13 mat_elot, le 29 mai 2009 à 12:28:51 
 Signaler ce message aux modérateurs

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

Configuration: Windows XP Internet Explorer 7.0

Meilleures réponses pour « [SQL] jointure externe plusieurs tables » dans :
SQL - Jointures Voir Expression des jointures Une jointure (ou θ-jointure) est un produit cartésien de deux tables. On appelle équijointure une θ-jointure dont la qualification est une égalité entre deux colonnes. En SQL, l'expression d'une jointure se...
SQL - Création de table VoirLe SQL, comportant un langage de définition de données (LDD), permet de créer des tables. Pour cela, il utilise le couple de mots clés CREATE TABLE. La création de tables Le création de tables se fait à l'aide du couple de mots-clés CREATE...
SQL - Modification de table VoirModification de table Il est possible de supprimer une table grâce à la clause DROP, il existe aussi des commandes moins extrêmes permettant L'ajout de colonnes La modification de colonnes La suppression de colonnes Enfin, il est possible...
SQL - Tri VoirTri des résultats Il est possible en SQL d'organiser les résultats grâce à la clause ORDER BY. La clause ORDER BY est suivie des mots clés ASC ou DESC, qui précisent respectivement si le tri se fait de manière croissante (par défaut) ou...

1

mat_elot, le 3 jun 2009 à 14:34:40

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

Répondre à mat_elot

2

Christounet, le 3 jun 2009 à 15:08:52

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 On se donne des souvenirs quand on se quitte.
(Marcel Achard)

Répondre à Christounet

3

mat_elot, le 12 jun 2009 à 09:43:01

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?

Répondre à mat_elot

4

 Giorgiolino, le 12 jun 2009 à 11:00:13

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 --> http://sqlpro.developpez.com/cours/sqlaz/jointures/
Rubrique III-D-2. Mécanisme en jeu


Bon courage.
"La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information"
Albert Einstein

Répondre à Giorgiolino