我有两个表Users和Games。
用户
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
我正在尝试加入连接以返回没有我的users_id的用户的用户个人资料照片
因此,如果我是users_id 2,我希望SQL返回player_1的profile_pic,反之亦然。
到目前为止,我已经掌握了此功能,但目前还差一点,因为这显然只是返回了我的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
任何帮助将不胜感激。
谢谢
答案 0 :(得分:3)
左两次加入用户,并在ON
子句中包括ID 2的排除。使用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;