sql >> Database >  >> RDS >> Mysql

MYSQL-query - Krijg de berichten van de huidige gebruiker en de berichten van de gebruiker die hij volgt

Om alle berichten van een bepaalde gebruiker (id=145) en alle gebruikers die het volgt, berichten te krijgen, samen met de gebruikersgegevens voor elk bericht, zou ik de query herschrijven om union te gebruiken in plaats van de of, waardoor de logica wordt vereenvoudigd. De 1e selectie krijgt de berichten van de gegeven gebruiker, de 2e krijgt de berichten van de gebruikers die hij volgt:

(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

Aannames:

  1. Het veld Activity.id vertegenwoordigt de gebruiker die de andere gebruiker volgt. Als dat niet het geval is, moet u de veldnaam wijzigen in de juiste.

  2. Uitgevonden het userid-veld van de Posts-tabel die de gebruiker vertegenwoordigt die de post heeft gepost. Gebruik in plaats daarvan de juiste veldnaam.




  1. PL/SQL-procedure:Hoe een select-statement retourneren?

  2. MySQL-querycaching:beperkt tot een maximale cachegrootte van 128 MB?

  3. Hoe SQL-query direct in C# uit te voeren?

  4. Dubbele tabellen verwijderen