J'ai deux tables: une table d'user et une table [user_friend]. Dans la table [user_friend], vous pouvez voir quel user est ami avec un certain user.
La table User ressemble à ceci:
[ID_user], [Nom d'user], [Mot de passe] 1 Mikeyy1 666je 2 misterG 8kdkd
La table des amis ressemble à ceci: (où Friend_ID a une key étrangère à l'ID user dans Utilisateur)
[User_ID] [Friend_ID] 1 3 1 6
Je veux interroger ce qui suit: montrer tous les noms des users avec les noms de leurs amis.
Jusqu'à présent, j'ai ceci:
SELECT u.Username, f2.Friend_ID FROM [User] u JOIN [user_friend] f2 ON u.User_ID = f2.User_ID
qui renvoie tout le nom d'user des users et les ID de leurs amis, mais je veux aussi leurs noms, alors j'ai pensé ceci:
SELECT u1.Username, f2.Friend_ID, (SELECT u.Username FROM [User] u JOIN [user_friend] f ON u.User_ID = f.friend_ID) AS "Friend" FROM [User] u1 JOIN [user_friend] f2 ON u1.User_ID = f2.User_ID
mais cela donne l'erreur que la sous-requête returnne plus de 1 valeur, comment puis-je résoudre ce problème?
Merci d'avance!
@Felix Pamittan Est le moyen habituel pour le résoudre. Mais juste pour l'exhaustivité, votre requête d'origine devrait être
SELECT u1.Username, f2.Friend_ID, (SELECT u2.Username FROM [User] u2 WHERE u2.User_ID = uf.friend_ID) AS "Friend" FROM [User] u1 JOIN [user_friend] uf ON u1.User_ID = uf.User_ID
Vous devez append un autre JOIN
:
SELECT u.Username, u2.Username FROM [User] u INNER JOIN [User_Friend] uf ON uf.User_ID = u.User_ID INNER JOIN [User] u2 ON u2.User_ID = uf.Friend_ID