Mysql
 sql >> Baza danych >  >> RDS >> Mysql

MYSQL Query - Pobierz posty bieżącego użytkownika i posty użytkownika, który śledzi

Aby uzyskać wszystkie posty danego użytkownika (id=145) i wszystkich użytkowników, których śledzi, wraz ze szczegółami użytkownika dla każdego postu, przepisałbym zapytanie, aby użyć union zamiast lub, upraszczając w ten sposób logikę. Pierwszy wybór pobiera posty danego użytkownika, drugi pobiera posty użytkowników, których śledzi:

(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

Założenia:

  1. Pole Activity.id reprezentuje użytkownika, który podąża za innym użytkownikiem. Jeśli nie, musisz zmienić nazwę pola na odpowiednią.

  2. Wymyślono pole identyfikatora użytkownika w tabeli Posts reprezentujące użytkownika, który opublikował post. Pls użyj prawidłowej nazwy pola w jej miejscu.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Relacja jeden do wielu między AspNetUsers (tożsamość) a tabelą niestandardową

  2. Moja firma hostingowa twierdzi, że coś jest nie tak z kodem PHP

  3. Aktywny rekord Codeigniter z kilkoma podobnymi lub?

  4. MySQL:Grupuj według i policz wiele pól

  5. Wypełnij listę rozwijaną wyboru z tabeli bazy danych