Z úprav a zpětné vazby komentářů je zde dotaz, který si myslím, že hledáte... Nejvnitřnější předběžný dotaz dostane příspěvky a kdo inicioval příspěvek, komentáře a kdo komentáře vložil. Tento vnitřní dotaz je také předřazen podle NEJNOVĚJŠÍCH KOMENTÁŘŮ na začátek podle postID. Na základě toho se připojuji k proměnným sql (@variables), abych @varRow zvýšil pokaždé, když nový komentář, a resetoval zpět na 1 pokaždé, když se změní ID příspěvku (proto vnitřní PreQuery objednává podle ID příspěvku FIRST ). A konečně, pomocí klauzule HAVING, aby byl @varRow komentáře <6, bude mít MAXIMÁLNĚ 5 každého příspěvku.
Pokud chcete omezit, jaké příspěvky se pokoušíte načíst, použil bych klauzuli WHERE (jako datum/čas, pokud je k dispozici) nanejvýš INNER, která generuje „PreQuery“.
select straight_join
PreQuery.*,
@varRow := if( @LastPost = PreQuery.PostID, @varRow +1, 1 ) CommentRow,
@LastPost := PreQuery.PostID PostID2
from
( select
posts.id PostID,
posts.body,
posts.CreatedAt,
u1.id UserID,
u1.DisplayName NameOfPoster,
c.id,
c.userid CommentUserID,
c.text CommentText,
u2.DisplayName CommentUserName
from
posts
join users u1
on posts.ownerUserID = u1.id
LEFT JOIN comments c
on posts.id = c.PostID
join users u2
on c.userid = u2.id
where
posts.id = TheOneParentIDYouWant
OR posts.parentid = TheOneParentIDYouWant
order by
posts.ID,
c.id desc ) PreQuery,
(select @varRow := 0, @LastPost = 0 ) SQLVars
having
CommentRow < 6
order by
PreQuery.postid,
CommentRow
--- UPRAVIT --- za komentář MYSLÍM SI, co myslíte tím, ke kterému "nadřazenému příspěvku" jsou komentáře přidruženy, protože mají přímo ID příspěvku. Vzhledem k tomu, že nejvnitřnější dotaz spojuje všechny prvky/tabulky v celé desce, všechny přicházejí na cestu...
Post -> User (to get posting user name )
Post -> Comment (on Common Post ID -- left joined)
Comment -> User ( to get commenting user name)
Jakmile je TO vše hotovo a seřazeno podle běžného ID příspěvku a nejnovějšího komentáře seřazeného nahoru, použiji @vars na VŠECHNY vrácené řádky. Klauzule HAVING odstraní jakýkoli komentář, jehož sekvence je BEYOND 5, kterou jste hledali.