8791 sujets

Développement web côté serveur, CMS

Bonsoir à tous !

Je bute sur un petit problème depuis le début d'après-midi, à savoir le système d'amis en place sur mon site web !

Plus précisément, mon problème est l'affichage de la liste d'amis d'un membre.

donc ! J'ai une table accounts, qui contien simplement:

'id' 'user_name' 'user_password'


Et une table friendship qui contien:
'id' 'from' 'to' 'validated'

validated verifie si la demande d'amis a été ou non acceptée, 'from' et 'to' correspondant aux invitations d'un membre à un autre, je souhaite que ma requete verifie si l'id du compte est présente dans from ou to

Et donc je souhaiterais connaitre la methode la plus simple pour afficher la liste d'amis d'un membre, et faire le lien avec la table accounts pour récupérer les user_name
Le plus simple est d'utiliser une jointure interne (INNER JOIN).


SELECT a.user_name 
FROM accounts a 
INNER JOIN friendship f 
	ON a.id = f.to 
	AND f.from = $user_id 
	AND f.validated = 1 
ORDER BY 	a.user_name ASC

Modifié par jb_gfx (02 Jul 2011 - 22:18)
Merci bien, dans l'idée c'est exactement ce que je cherchait, mais si from et to sont inversés:

l'utilisateur $user_id invite l'utilisateur 13 (par exemple, ça fonctionne)

Mais si à l'inverse l'utilisateur 13 invite $user_id ça ne marche plus, comment pourrais-je vérifier les deux cas de figure ?
Dis moi exactement et simplement ce que tu souhaites obtenir (sans parler d'id ou autre).

En français tu l'exprimerais comment ?
Modifié par jb_gfx (02 Jul 2011 - 23:12)
J'avoue que j'ai un peu de mal à expliquer ça Smiley langue

En gros je veux afficher la liste d'ami du compte courant ($user_id)
Qu'il ai envoyé ou reçu l'invitation, en gros verifier que l'id du compte courant soit dans l'une ou l'autre des colonnes `from` ou `to`
Mon problème semble être résolu, merci à vous deux !

edit: Voilà la requête finale, si ça peut aider des gens Smiley smile


(SELECT a.user_lastname, a.user_firstname FROM accounts a INNER JOIN friendship f ON a.id = f.to AND f.from = $myid AND f.validated = 1)  
UNION (SELECT a.user_lastname, a.user_firstname FROM accounts a INNER JOIN friendship f ON a.id = f.from AND f.to = $myid AND f.validated = 1) 

Modifié par John.K (03 Jul 2011 - 13:13)
Pourquoi tu voudrais faire ça exactement ? Soit tu récupères la liste d'amis soit la liste d'invitations d'un utilisateur. Mais quel est l’intérêt de récupérer les 2 mélangées ?
Pour que la relation entre les deux compte apparaisse dans les deux comptes, c'est sûrement pas la meilleure solution, mais je prévoit pas de rivaliser avec facebook dans l’immédiat donc ça devrais aller pour l'usage que j'en fait Smiley langue