Выбор пользователя, который не я - PullRequest
0 голосов
/ 16 января 2019

У меня есть две таблицы: пользователи и игры.

Пользователи

users_id, profile_pic, username
1, rita.jpg, Rita
2, sue.jpg, Sue

Игры

games_id, player_1_users_id, player_2_users_id, status
1, 1, 2, 3

Я пытаюсь объединиться, чтобы вернуть фотографию профиля пользователя, у которого нет моего user_id

Итак, если я users_id 2, я хочу, чтобы SQL возвращал profile_pic для player_1, и наоборот.

У меня пока что есть, но сейчас я немного отошел, поскольку это, очевидно, просто возвращает мой profile_pic, а не других пользователей:

SELECT  u.profile_pic
              FROM games g 
              JOIN users u ON (u.users_id = g.player_1_users_id OR u.users_id = g.player_2_users_id)
              WHERE 
              (player_1_users_id = 2 OR player_2_users_id = 2) AND
              g.status = 3

Любая помощь будет принята с благодарностью.

Спасибо

1 Ответ

0 голосов
/ 17 января 2019

Дважды присоединитесь к пользователям и включите исключение идентификатора 2 в предложении ON. Получите изображение профиля, которое не NULL, используя coalesce().

SELECT g.games_id,
       coalesce(u1.profile_pic,
                u2.profile_pic) profile_pic
       FROM games g
            LEFT JOIN users u1
                      ON u1.users_id = g.player_1_users_id
                         AND g.player_1_users_id <> 2
            LEFT JOIN users u2
                      ON u2.users_id = g.player_2_users_id
                         AND g.player_2_users_id <> 2
       WHERE 2 IN (g.player_1_users_id,
                   g.player_2_users_id)
             AND g.status = 3;

дб <> скрипка

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...