Mysql
 sql >> Database >  >> RDS >> Mysql

Query MYSQL:ottieni i post dell'utente corrente e i post dell'utente che sta seguendo

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:

  1. Il campo Activity.id rappresenta l'utente, che segue l'altro utente. In caso contrario, è necessario modificare il nome del campo in quello appropriato.

  2. 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.