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