För att få alla inlägg en given användare (id=145) och alla användare som den följer inlägg, tillsammans med användarinformationen för varje inlägg, skulle jag skriva om frågan för att använda union
istället för eller, vilket förenklar logiken. Det första valet får inläggen från den givna användaren, det andra får inläggen från de användare som det följer:
(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
Antaganden:
-
Activity.id-fältet representerar användaren som följer den andra användaren. Om inte, måste du ändra fältnamnet till lämpligt.
-
Uppfann användarid-fältet i tabellen Inlägg som representerar användaren som postade inlägget. Använd det korrekta fältnamnet i stället.