Mysql
 sql >> Datenbank >  >> RDS >> Mysql

MYSQL-Abfrage - Holen Sie sich die Beiträge des aktuellen Benutzers und die Beiträge des Benutzers, denen er folgt

Um alle Posts eines bestimmten Benutzers (id=145) und alle Posts der Benutzer, denen er folgt, zusammen mit den Benutzerdetails für jeden Post zu erhalten, würde ich die Abfrage so umschreiben, dass sie union verwendet anstelle des oder, wodurch die Logik vereinfacht wird. Die erste Auswahl erhält die Posts des angegebenen Benutzers, die zweite die Posts der Benutzer, denen sie folgt:

(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

Annahmen:

  1. Das Feld Activity.id repräsentiert den Benutzer, der dem anderen Benutzer folgt. Wenn nicht, müssen Sie den Feldnamen entsprechend ändern.

  2. Das userid-Feld der Posts-Tabelle wurde erfunden, das den Benutzer darstellt, der den Post gepostet hat. Bitte verwenden Sie stattdessen den korrekten Feldnamen.