you should be able to work with this (sqlFiddle) here i am only grabbing 3 (instead of 15) child_id and 6 (instead of 30) parentcomment
and in my example, the $parentid
is 1
. The inner most query is your original query just added the ORDER BY parentcomment,child_id
SELECT parentcomment,child_id,parentRank,childRank
FROM
(SELECT parentcomment,
child_id,
IF (@prevparent <> parentcomment, @parentRank:=@parentRank+1, @parentRank) as parentRank,
IF (@prevparent <> parentcomment, @childRank:=1, @childRank:=@childRank+1) as childRank,
@prevparent := parentcomment
FROM
(SELECT e.comment_id AS parentcomment,
m.comment_id AS child_id
FROM comments e
INNER JOIN comments m
ON e.comment_id=m.parent_id
WHERE e.parent='1' AND e.parent_id='1' AND m.parent='0'
ORDER BY parentcomment,child_id
)T1,
(SELECT @prevparent:=0,@parentRank:=0,@childRank:=0)rank
)T2
WHERE parentRank BETWEEN 1 AND 6
AND childRank BETWEEN 1 AND 3