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:
-
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í.
-
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ě.