sql >> Databáze >  >> RDS >> Mysql

MYSQL Query – Získejte příspěvky aktuálního uživatele a příspěvky uživatele, který sleduje

Abych všechny příspěvky dostal od daného uživatele (id=145) a od všech uživatelů, které sleduje, spolu s podrobnostmi o uživateli pro každý příspěvek, přepsal bych dotaz tak, aby používal union místo nebo, čímž se zjednoduší logika. 1. výběr získá příspěvky daného uživatele, 2. výběr příspěvků uživatelů, které sleduje:

(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

Předpoklady:

  1. Pole Activity.id představuje uživatele, který sleduje druhého uživatele. Pokud ne, musíte změnit název pole na odpovídající.

  2. Vynalezl pole userid tabulky Příspěvky představující uživatele, který příspěvek zveřejnil. Použijte prosím správný název pole na jeho místě.




  1. Postgresql omezení pro kontrolu ne-ascii znaků

  2. Převeďte celé číslo na hex a hex na celé číslo

  3. Určete typ mime ze sloupce MySQL

  4. MySQL neaktualizuje information_schema, pokud ručně nespustím ANALYZE TABLE `myTable`