आप रिकॉर्ड स्तर प्राप्त करने के लिए MySQL फ़ंक्शन बना सकते हैं और फिर इसे अपनी क्वेरी में कॉल कर सकते हैं। फ़ंक्शन इनपुट रिकॉर्ड आईडी होगा और स्तर संख्या आउटपुट होगा। फ़ंक्शन इस तरह होगा
DELIMITER $$
DROP FUNCTION IF EXISTS `getlevel` $$
CREATE FUNCTION `get_level`(Id int(11)) RETURNS int(11)
DETERMINISTIC
BEGIN
DECLARE levelNumber int(11); -- declare variable to record level
DECLARE parent int(11); -- declare variable to hold the parent id
set levelNumber = 0; -- set the level to zero at the begining
set parent = (select `relation_column` from `table` where `id_column` = Id); -- get parent record of then id givin to function
while parent > 0 DO -- loop unitl parent = 0 or record has no parent
set levelNumber = levelNumber + 1; -- increase level by 1
set parent = (select `relation_column` from `table` where `id_column` = parent); -- re set parent id
END
WHILE;
return levelNumber; -- return then level number
END$$
DELIMITER ;
संबंध_स्तंभ वह स्तंभ है जो रिकॉर्ड संबंध रखता है। id_column वह स्तंभ है जो रिकॉर्ड आईडी या (प्राथमिक कुंजी) रखता है।
अंतिम क्वेरी इस तरह होगी
select `table`.`id_column`,`table`.`relation_column`,`table`.`name`,get_level(`table`.`id_column`) as "level" from `table`
आशा है कि यह मदद करेगा