私または別のユーザーをフォローしているすべてのユーザーを表示したい。
私は3つのテーブルを使いました
ユーザー
- ID
- ユーザー名
ユーザーフォロー
- ID
- ユーザーID
- follow_id
- 日にち
画像
- ID
- ユーザーID
- 画像
最後にアップロードされた画像でユーザー名を取得しようとしました。また、自分とフォロワーのステータスを取得して、既にフォローしているかどうかを確認する必要があります。
私のクエリは Mysql に書かれています:
SELECT
u.id AS user_id,
u.username,
i.image,
t.id AS STATUS
FROM
users AS u
INNER JOIN (user_follow AS f)
ON (u.id = f.user_id)
LEFT OUTER JOIN images i
ON i.id =
(SELECT
b.id
FROM
images AS b
WHERE f.user_id = b.user_id
ORDER BY b.id DESC
LIMIT 1)
LEFT OUTER JOIN user_follow t
ON t.id =
(SELECT
m.id
FROM
user_follow m
WHERE user_id = 3
AND follow_id = u.id)
WHERE f.follow_id = 7
AND f.user_id NOT IN (7, 3)
GROUP BY f.user_id
私のユーザーID - 3; ID - 7 のユーザーをフォローしているユーザーを見ています
出力は次のとおりです。
Array
(
[0] => Array
(
[user_id] => 6
[username] => 6666
[image] => flw3utn9igiqh7dtt2o61ydf8_174.jpeg
[status] => 226
)
)
私のクエリは高すぎると思います。ステータスを簡単に確認して 1 または 0 を出力する方法がわかりません。「フォローする」場合はフォローラインIDを取得し、そうでない場合は空にします。また、クエリを最適化する方法を教えていただければ幸いです。