Introduction
There are a lot of answers out there which explains nicely how to read hierarchical data from parent-child relations. I am using mySQL and I have created a query which reads all parents (parent_id) (concatenated through comma) for a given id:
create table `menu` (
    `id` double ,
    `title` varchar (765),
    `controller` varchar (765),
    `method` varchar (765),
    `url` varchar (765),
    `parent_id` varchar (765),
    `added_date` datetime ,
    `updated_date` datetime 
);
Full example with table filled: http://sqlfiddle.com/#!9/48d276f/171 . The query should run without CTE and currently looks like:
SELECT GROUP_CONCAT(T2.id) AS parents
FROM (
    SELECT
        @r AS _id,
        (SELECT @r := parent_id FROM menu WHERE id = _id) AS parent_id,
        @l := @l + 1 AS lvl
    FROM (SELECT @r := 31, @l := 0) vars, menu m
    WHERE @r <> 0) T1
JOIN menu T2
ON T1._id = T2.id
ORDER BY T1.lvl DESC;
The result of the query is:
parents
-------------
3,17,31
Challenge:
I want to create the same query which allows me to read parents of multiple id's. I thought a subquery would help but I get an error (Unknown table 'T3' in field list) when passing the id to the subquery.
Expected result should be:
id      | parents
-----------------------
25      | 5,25
31      | 3,17,31
23      | 4,23
The used query (http://sqlfiddle.com/#!9/48d276f/180):
SELECT T3.id, T4.parents
FROM menu T3, (SELECT T3.id, GROUP_CONCAT(T2.id) AS parents
  FROM (
      SELECT
          @r AS _id,
          (SELECT @r := parent_id FROM menu WHERE id = _id) AS parent_id,
          @l := @l + 1 AS lvl
      FROM (SELECT @r := T3.id, @l := 0) vars, menu m
      WHERE @r <> 0) T1
  JOIN menu T2
  ON T1._id = T2.id
  ORDER BY T1.lvl DESC) T4
WHERE T3.id IN (25, 31, 23)
 
    