За да получа всички публикации на даден потребител (id=145) и всички потребители, които той следва, заедно с потребителските данни за всяка публикация, бих пренаписал заявката, за да използвам union
вместо или, като по този начин се опростява логиката. Първият избор получава публикациите на даден потребител, вторият получава публикациите на потребителите, които следва:
(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 представлява потребителя, който следва другия потребител. Ако не, трябва да промените името на полето на подходящото.
-
Изобретил полето userid на таблицата Posts, представляващо потребителя, който е публикувал публикацията. Моля, използвайте правилното име на полето на негово място.