Para obter todas as postagens de um determinado usuário (id=145) e todos os usuários que seguem as postagens, juntamente com os detalhes do usuário para cada postagem, reescreveria a consulta para usar
union
em vez do ou, simplificando assim a lógica. A 1ª seleção obtém as postagens do usuário em questão, a 2ª obtém as postagens dos usuários que está seguindo:(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
Suposições:
-
O campo Activity.id representa o usuário, que segue o outro usuário. Caso contrário, você precisa alterar o nome do campo para o apropriado.
-
Inventou o campo userid da tabela Posts representando o usuário que postou o post. Pls usa o nome de campo correto em seu lugar.