Написала запрос вместе с процедурой и функцией. Он работает, но вот не могу сообразить как его можно отсортировать по id. Сортировка как бы идет, но идет она как строка и получается что сразу после 10 идет 100 и только потом 11.
DROP PROCEDURE IF EXISTS getpath;
DELIMITER $$
CREATE PROCEDURE getpath(IN cat_id INT, OUT path TEXT)
BEGIN
DECLARE catname VARCHAR(250);
DECLARE temppath TEXT;
DECLARE tempparent INT;
SET max_sp_recursion_depth = 255;
SELECT name, parent_id FROM menu WHERE id=cat_id INTO catname, tempparent;
IF tempparent IS NULL
THEN
SET path = cat_id;
ELSE
CALL getpath(tempparent, temppath);
SET path = CONCAT(temppath, '/', cat_id);
END IF;
END$$
DELIMITER ;
DROP FUNCTION IF EXISTS getpath;
DELIMITER $$
CREATE FUNCTION getpath(cat_id INT) RETURNS TEXT DETERMINISTIC
BEGIN
DECLARE res TEXT;
CALL getpath(cat_id, res);
RETURN res;
END$$
DELIMITER ;
SELECT DISTINCT p.id, m.id, m.name, m.link, m.type, getpath(m.id) AS path, p.title, p.active, p.created_at
FROM menu m
LEFT JOIN page p ON p.route=m.link
ORDER BY path;
Как можно модифицировать запрос для этого?