Выберите данные пользователя из таблицы самоотношения - PullRequest
0 голосов
/ 30 марта 2012

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

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", он не работает.

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

1 Ответ

0 голосов
/ 30 марта 2012

Дайте мне знать, если это удастся:

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 = ?
...