特定のユーザー(id =145)のすべての投稿と、投稿をフォローするすべてのユーザー、および各投稿のユーザーの詳細を取得するには、union
を使用するようにクエリを書き直します。 またはの代わりに、ロジックを簡素化します。最初の選択は指定されたユーザーの投稿を取得し、2番目の選択はそれがフォローしているユーザーの投稿を取得します:
(SELECT P.id as postid,
P.caption,
P.date,
U.id as userid,
U.fullname,
U.username,
FROM USERS AS U
INNER JOIN Posts AS P ON P.userid = U.id
WHERE U.id = 145)
UNION
(SELECT P.id,
P.caption,
P.date,
U.id,
U.fullname,
U.username,
FROM Activity AS A
INNER JOIN USERS AS U ON A.IdOtherUser=U.id
INNER JOIN Posts AS P ON P.userid = U.id
WHERE A.id = 145)
ORDER BY postid DESC
前提条件:
-
Activity.idフィールドは、他のユーザーをフォローしているユーザーを表します。そうでない場合は、フィールド名を適切な名前に変更する必要があります。
-
投稿を投稿したユーザーを表すPostsテーブルのuseridフィールドを発明しました。 plsは代わりに正しいフィールド名を使用します。