Per ottenere tutti i post di un determinato utente (id=145) e tutti gli utenti che segue i post, insieme ai dettagli utente per ogni post, riscriverei la query per utilizzare union
invece di o, semplificando così la logica. La prima selezione ottiene i post dell'utente specificato, la seconda ottiene i post degli utenti che sta seguendo:
(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
Presupposti:
-
Il campo Activity.id rappresenta l'utente, che segue l'altro utente. In caso contrario, è necessario modificare il nome del campo in quello appropriato.
-
Ha inventato il campo userid della tabella Posts che rappresenta l'utente che ha pubblicato il post. Si prega di utilizzare il nome del campo corretto al suo posto.