表:frei_session
id username accountId status status_mesg
14 Sumit Bijvani 50 0 I am available
16 Dilip Borad 49 1 I am available
15 Karan Bijvani 51 1 I am available
表:用户
accountId friends userImage
49 50,52 49.jpg
50 49,52,51,44 50.jpg
51 50 51.jpg
我有 2 个表,frei_session 有在线用户的记录,users 表有用户和他们的 friend 的数据,用逗号分隔 ID。
我想根据 users 表的 friends 列从 frei_session 表中检索数据。
对于前任
如果 用户 49
在线,我想要如下所示的输出
id username accountId status status_mesg userImage
14 Sumit Bijvani 50 0 I am available 50.jpg
因为用户 50 和 52 是用户 49 的 friend ,但现在只有用户 50 在线
我试过以下查询。但它显示错误的用户图像。
SELECT b.*, a.userImage
FROM users a
INNER JOIN frei_session b
ON FIND_IN_SET(b.accountID, a.friends) > 0
INNER JOIN
(
SELECT accountID, username, MAX(id) id
FROM frei_session
GROUP BY accountID, username
) c ON b.accountID = c.accountID AND
b.username = c.username AND
b.id = c.id
WHERE b.status = 0 AND
a.accountID = 49
最佳答案
frei_session
的结果是user (a)
的 friend 这就是为什么它不包含您 friend 的图像,而是包含您要搜索的用户的图像的原因。所以为了让你得到你 friend 的形象,你需要把它加入另一个 user (d)
所以你可以从 frei_session
得到正确的图像表。
SELECT b.*, d.userImage
FROM users a
INNER JOIN frei_session b
ON FIND_IN_SET(b.accountID, a.friends) > 0
INNER JOIN
(
SELECT accountID, username, MAX(id) id
FROM frei_session
GROUP BY accountID, username
) c ON b.accountID = c.accountID AND
b.username = c.username AND
b.id = c.id
INNER JOIN users d
ON b.AccountID = d.AccountID
WHERE b.status = 0 AND
a.accountID = 49
关于php - 从表中选择逗号分隔的记录以及用户图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15472008/