SELECT COUNT(*) INTO @node_level FROM {terms} AS t1 INNER JOIN {terms} AS t2 ON t1.mptt_left BETWEEN t2.mptt_left AND t2.mptt_right; WHERE t1.term = @myterm; SELECT term.term, term.mptt_left, term.mptt_right FROM {terms} AS term INNER JOIN {terms} AS t2 ON term.mptt_left BETWEEN t2.mptt_left AND t2.mptt_right INNER JOIN ( SELECT term, COUNT(*) as level FROM {terms} AS t1 INNER JOIN {terms} AS t2 ON t1.mptt_left BETWEEN t2.mptt_left AND t2.mptt_right GROUP BY term ) as levels ON term.term = levels.term AND levels.level = (@node_level + 1) GROUP BY term.term;