我有3个表,我想从中获取用户数据。
表1: frei_session
username session_id
Prince 51
Dilip 49
Sumit 50
表2: friendrequest
requestTo requestFrom status
49 50 C
50 51 C
49 51 P
表3: users
accountId userImage
49 image_49.jpg
50 image_50.jpg
51 image_51.jpg
friendrequest 表显示 C 代表完成且 P 代表待定的用户之间的关系即可。表示status = C
两者都是朋友,status = P
请求是否待处理。
frei_session 表格显示网站的所有在线用户。
用户表存储了图片路径
我想要显示用户的图像及其ID。
假设用户 49 在线
SELECT IF(a.RequestTo = 49, c.userName, b.userName) username,
IF(a.RequestTo = 49, c.session_ID, b.session_ID) Session_ID
FROM friendRequest a
INNER JOIN frei_session b
ON a.requestTo = b.session_ID
INNER JOIN frei_session c
ON a.requestFrom = c.session_ID
WHERE a.status = 'C' AND
49 IN (a.requestTo, a.requestFrom)
此查询显示此输出
username session_id
Sumit 50
但我想要像这样输出
username session_id userImage
Sumit 50 image_50.jpg
任何想法?
答案 0 :(得分:1)
您可以将整个查询包装在子查询中,并将其与表users
SELECT x.*, y.userImage
FROM
(
SELECT IF(a.RequestTo = 49, c.userName, b.userName) username,
IF(a.RequestTo = 49, c.session_ID, b.session_ID) Session_ID
FROM friendRequest a
INNER JOIN frei_session b
ON a.requestTo = b.session_ID
INNER JOIN frei_session c
ON a.requestFrom = c.session_ID
WHERE a.status = 'C' AND
49 IN (a.requestTo, a.requestFrom)
) x INNER JOIN users y
ON x.session_ID = y.accountID