Unfortunately, MySQL 5 haven't recursive queries.
But if you don't have a lot of levels (for example 4) you can use several queries which is joined with UNION ALL
. I think it'll be faster and easy to understand than one dificult and hard query.
Test data
create table products(
id varchar(1),
parent_id varchar(1)
);
insert products(id,parent_id)values
('A',NULL),
('B','A'),
('C','B'),
('K',NULL),
('J','K'),
('Y','J');
Demo query
SELECT l1.id,l1.parent_id,NULL parent_ids
FROM products l1
WHERE l1.parent_id IS NULL
UNION ALL
SELECT l2.id,l2.parent_id,l1.id
FROM products l1
JOIN products l2 ON l2.parent_id=l1.id
WHERE l1.parent_id IS NULL
UNION ALL
SELECT l3.id,l3.parent_id,concat(l1.id,',',l2.id)
FROM products l1
JOIN products l2 ON l2.parent_id=l1.id
JOIN products l3 ON l3.parent_id=l2.id
WHERE l1.parent_id IS NULL
UNION ALL
SELECT l3.id,l3.parent_id,concat(l1.id,',',l2.id,',',l3.id)
FROM products l1
JOIN products l2 ON l2.parent_id=l1.id
JOIN products l3 ON l3.parent_id=l2.id
JOIN products l4 ON l4.parent_id=l3.id
WHERE l1.parent_id IS NULL
SQL Fiddle - http://sqlfiddle.com/#!9/0b76f4/16