bonjour,
voici ce que je souhaiterais faire
Soit une Table "ENFANTS" comme ceci :
NOM / AGE
TOTO / 13
LOLO / 14
TITI / 15
MUMU / 17
Et une table "COPAINS" regroupant les X meilleurs copains des enfants, comme ceci :
NOM / NUMERO / COPAIN
TOTO / 1 / LOLO
TOTO / 2 / NINI
TOTO / 3 / CUCU
MUMU / 1 / FIFI
MUMU / 2 / TITI
MUMU / 3 / LALA
je souhaite joindre ces deux tables et faire en sorte d'obtenir ce genre de résultat (jointure sur le champ NOM)
NOM / AGE / COP1 / COP2 / COP3
TOTO / 13 / LOLO / NINI / CUCU
MUMU / 17 / FIFI / TITI / LALA
Ma difficulté est que les champs à créer de type COP* sont sur des enregistrements différents dans la table COPAINS, il faut donc que j'arrive à boucler mais je ne sais pas comment faire.
De plus il faut rester en jointure type externe pour bien garder tous les ENFANTS, même ceux qui n'ont pas de copains
Actuellement j'arrive à le faire mais pour cela je fais 3 jointures (1 par NUMERO de copain) ce qui donne :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 select A.NOM, A.AGE, X.COPAIN as COP1, Y.COPAIN as COP2, Z.COPAIN as COP3 from ENFANTS A left outer join COPAINS X on (X.NOM = A.NOM and X.NUMERO = 1) left outer join COPAINS Y on (Y.NOM = A.NOM and Y.NUMERO = 2) left outer join COPAINS Z on (Z.NOM = A.NOM and Z.NUMERO = 3)
...mais j'aimerais simplifier
c'est un peu concon comme exemple mais j' espère c'est clair
si vous avez une idée...
merci
laurent
Partager