Forum Clubic

Faire un double join vers une table

Bonjour,

j’ai une table r, décrivant des roles et des relations entre des entités, qui comporte plusieurs colonnes qui se référent à une autre table e, qui elle comporte ces entités.

Sur la table des roles et relations, j’ai le nom, prénom et login etc…
Quand je n’ai pas de role défini, comme par example ‘gérant de’, je peux avoir une relation définie genre
‘Employeur de’ et son inverse ‘employé de’, ou ‘remplacant de a’ / ‘remplacant de b’

Le problème qui se pose c’est que je veux faire un lien entre la table des entités et la table des roles&relations basé sur
join Entité e on r.ObjID_entité = e.ObjID
pour récupérer les noms,prenoms,login de l’entité (celle qui est remplacant de b)

Mais je dois faire un deuxième lien sur la même table
join Entité e on r.ObjID_entitéInverse = e.ObjID
pour récupérer les noms/prénoms de l’entité inverse. (celle qui est remplacant de a)

join Entité e on r.ObjID_Party = e.ObjID
join Entité e on r.RDObjID_InverseEntité = e.ObjID

Mais en faisant ma query, j’ai l’erreur suivante:
Msg 1011, Level 16, State 1, Line 1
The correlation name ‘e’ is specified multiple times in a FROM clause.

Comment faire un double join?

Merci d’avance
Edité le 30/08/2010 à 15:53

En fait j’ai déjà trouvé la réponse à ma question:

join Entité e on r.ObjID_Party = e.ObjID
join Entité e2 on r.RDObjID_InverseEntité = e2.ObjID

je suis fatigué

en fait, tout était dans le message d’erreur :

“The correlation name ‘e’ is specified multiple times in a FROM clause.” :smiley:

attention cependant aux jointures …

a join b using (id) join c using (id)
ne donnera pas forcément le même résultat que :
c join a using(id) join b using (id) !

l’ordre est important sachant que chaque limitation induite d’une jointure se répercute sur la suite.