2012-03-30 2 views
0

J'ai 3 tables (utilisateur, relations et user_type) avec ces données (celles qui sont pertinentes):Choisissez les détails de l'utilisateur à partir d'une table de relation auto

USER TABLE: 
id, username, avatar, user_type_id 

RELATIONSHIP TABLE: 
id, user_id1, user_id2, relationship_points 

USER_TYPE 
id 

Je suis en train de créer une seule entrée par rapport si , l'utilisateur avec l'ID "1" pourrait être dans user_id1 OU user_id2 dans une relation, donc, je n'ai pas besoin de dupliquer les données inutiles.

J'ai déjà créé (grâce à un autre StackOverflow answer) une requête pour sélectionner tous les détails de relation d'un utilisateur, mais seulement si son identifiant est dans "user_id1". Mais, comme vous pouvez le constater, si l'utilisateur est dans "user_id2", cela ne fonctionne pas.

Je sais que je pourrais faire une autre requête, mais je pense que c'est la manière "facile, paresseuse", et j'aimerais apprendre comment le faire dans une seule requête.

Répondre

0

Permettez-moi de savoir si cela fait l'affaire:

SELECT 
    r.id AS relationship_id, 
    r.relationship_points AS points, 
    u.username AS username, 
    u.avatar_url AS avatar 
FROM relationship AS r 
INNER JOIN user u 
ON r.user_id2 = u.id OR r.user_id1 = u.id 
INNER JOIN user_type AS t 
ON u.user_type_id = t.id 
WHERE u.id = ? 
+0

Presque ... (Je viens de voir cette réponse maintenant ... désolé). –

+0

Le résultat de la requête échoue avec les données de l'utilisateur ... toutes les données proviennent de l'utilisateur "principal" au lieu de ses amis ... –

Questions connexes