SELECT node.GROUPNAME, (COUNT(parent.GROUPNAME) - (sub_tree.depth + 1)) AS depth FROM p_groups2 AS node, p_groups2 AS parent, p_groups2 AS sub_parent, ( SELECT node.GROUPNAME, (COUNT(parent.GROUPNAME)-1) AS depth FROM p_groups2 AS node, p_groups2 AS parent, ( SELECT node.L, COUNT(node.GROUPNAME) as depth FROM p_groups2 as node INNER JOIN grouplist ON grouplist.GROUPID=node.ID WHERE grouplist.UID=54320 GROUP BY node.GROUPNAME ORDER BY node.L ASC LIMIT 1 ) as m WHERE node.L BETWEEN parent.L AND parent.R AND node.L > m.L GROUP BY node.GROUPNAME ORDER BY node.L )AS sub_tree WHERE node.L BETWEEN parent.L AND parent.R AND node.L BETWEEN sub_parent.L AND sub_parent.R AND sub_parent.GROUPNAME = sub_tree.GROUPNAME GROUP BY node.GROUPNAME ORDER BY node.L;