表 : 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テーブルにはユーザーとその友人のデータがコンマで区切られたIDがあります。
usersテーブルのfriends列に基づいてfrei_sessionテーブルからデータを取得したいと考えています。
例の場合
user 49
オンラインの場合、以下のような出力が必要です
id username accountId status status_mesg userImage
14 Sumit Bijvani 50 0 I am available 50.jpg
ユーザー 50 と 52 はユーザー 49 のフレンドですが、ユーザー 50 だけがオンラインになっているためです。
次のクエリを試しました。しかし、間違ったuserImageが表示されます。
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