SELECT GROUP_CONCAT(lv SEPARATOR ',') as childrens
FROM
(
SELECT @pv:=( SELECT GROUP_CONCAT( uid SEPARATOR ',' ) FROM __table__ WHERE parent_id IN ( @pv ) ) AS lv
FROM __table__
JOIN ( SELECT @pv:='__parent_id__' ) tmp
WHERE parent_id IN (@pv)
) a;
// get parents
SELECT
`_id` AS `file_id`,
`q`.`parent_id`,
(SELECT name FROM files AS `r` WHERE `r`.`file_id` = `q`.`_id` ) AS `name`
FROM
( SELECT @r AS `_id`, ( SELECT @r := `parent_id` FROM `files` WHERE `file_id` = `_id` ) AS `parent_id` FROM ( SELECT @r := '__id__', @l := '0' ) AS `vars`, `files` WHERE @r <> '0' ) AS `q`