Liens entre trois tables

Résolu
frites.saucisse Messages postés 10 Statut Membre -  
frites.saucisse Messages postés 10 Statut Membre -
Bonjour,
J'ai trois tables t1, t2 et t3 comme ceci:
t1:
Id Para1
1 a
2 b
3 c

t2:
Id Para2
1 x
2 y

t3:
Id Para3
3 p

Comment écrire la requête pour obtenir le résultat suivant:
Id Para1 Para2 Para3
1 a x None
2 b y None
3 c None p

Un grand merci d'avance pour votre aide!

2 réponses

  1. jee pee Messages postés 9445 Date d'inscription   Statut Modérateur Dernière intervention   9 984
     
    Salut,

    Il faut quelque chose comme :

    SELECT t1.Id, Para1, Para2, Para3
    FROM T1, T2, T3
    LEFT OUTER JOIN T2 ON T1.ID = T2.ID
    LEFT OUTER JOIN T3 ON T1.ID = T3.ID

    cdlt
    0
    1. Utilisateur anonyme
       
      Bonjour

      Petit détail, il ne faut pas répéter dans le FROM les tables qui sont dans les JOIN :
      SELECT t1.Id, Para1, Para2, Para3 
      FROM t1
      LEFT OUTER JOIN t2 ON t1.Id = t2.Id 
      LEFT OUTER JOIN t3 ON t1.Id = t3.Id
      
      0
    2. jee pee Messages postés 9445 Date d'inscription   Statut Modérateur Dernière intervention   9 984
       
      merci ;-)

      Écrire une requête sans l'exécuter n'est souvent pas bon pour moi. La syntaxe est rarement exacte du premier coup.
      0
    3. Utilisateur anonyme
       
      En fait, la syntaxe est correcte, mais la requête ne fait plus la même chose.
      0
  2. frites.saucisse Messages postés 10 Statut Membre
     
    Bonjour,
    Merci pour cette réponse. J'ai fait

    select t.Para1,u.Para2, v.Para3
    from t1 t,t2 u, t3 v
    left outer join t2 on t.pid = u.pid
    left outer join t3 on t.pid = v.pid

    et j'obtiens une combinatoire de tous les paramètres de style
    1 a x p
    1 a y p
    2 a x p
    2 a y p
    etc.

    pas de case avec None comme souhaité...
    Comment y remédier?
    0
    1. Utilisateur anonyme
       
      Voir mon message précédent. Mais tu auras Null, pas None.
      0
    2. frites.saucisse Messages postés 10 Statut Membre
       
      Magnifique, ça marche. Merci pour vos réponses.
      0