2010-09-28 8 views
0

J'ai deux tablesMySql - Sélectionnez Requête - Rejoint

utilisateur

ID UserName 
1 Name1 
2 Name2 
3 Name3 
4 Name4 
5 Name5 

article

ID ItemName InsertedBy UpdatedBy 
1 Item1 1   4 
2 Item2 3   3 
3 Item3 2   5 
4 Item4 5   3 
5 Item5 4   5 

Résultante Tableau nécessaire

ID ItemName InsertedBy UpdatedBy 
1 Item1 Name1  Name4 
2 Item2 Name3  Name3 
3 Item3 Name2  Name5 
4 Item4 Name5  Name3 
5 Item5 Name4  Name5 

Comment cela peut-il être réalisé dans une requête de jointure unique?

Répondre

3
SELECt Id, ItemName, u1.UserName InsertedBy, u2.UserName UpdatedBy 
FROM Item i, user u1, user u2 
WHERE i.InsertedBy = u1.Id 
    AND i.UpdatedBy = u2.Id 

Si UpdatedBy peut être NULL alors la requête sera:

SELECt Id, ItemName, u1.UserName InsertedBy, u2.UserName UpdatedBy 
FROM Item i JOIN user u1 ON (i.InsertedBy = u1.Id) 
LEFT JOIN user u2 ON (i.UpdatedBy = u2.Id) 
+0

+1 pour presque correct, votre sélection doit être 'SELECT i.Id, ItemName, u1.UserName InsertedBy, u2.UserName UpdatedBy ' –

+0

@lasseespeholt, merci, j'ai corrigé ma faute de frappe –