Выберите данные пользователя из таблицы самоотношения

У меня есть 3 таблицы (пользователь, отношение и user_type) с этими данными (соответствующими):

USER TABLE:
id, username, avatar, user_type_id

RELATIONSHIP TABLE:
id, user_id1, user_id2, relationship_points

USER_TYPE
id

Я пытаюсь создать одну запись для каждого отношения, поэтому пользователь с идентификатором «1» может быть в отношениях user_id1 ИЛИ user_id2, поэтому мне не нужно дублировать ненужные данные.

Я уже создал (спасибо другому StackOverflow answer) запрос для выбора всех сведений об отношениях от пользователя, но только если его идентификатор находится в «user_id1».

    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 AS u
    ON
        r.user_id2 = u.id
    INNER JOIN
        user_type AS t
    ON
        u.user_type_id = t.id
    WHERE
        r.user_id1 = ?

Но, как видите, если пользователь находится в «user_id2», это не работает.

Я знаю, что мог бы сделать еще один запрос, но я думаю, что это «простой, ленивый» способ, и я хотел бы узнать, как это сделать в одном запросе.


person Eduardo Russo    schedule 30.03.2012    source источник


Ответы (1)


Дайте мне знать, если это поможет:

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 = ?
person Mosty Mostacho    schedule 30.03.2012
comment
Почти… (Я только что увидел этот ответ СЕЙЧАС… извините). - person Eduardo Russo; 20.05.2012
comment
Результат запроса не соответствует данным пользователя… все данные поступают от основного пользователя, а не от его друзей… - person Eduardo Russo; 20.05.2012