mysql + php извлекает листовые дети с помощью пути

У меня есть таблица, вот так.

+-----------+-----------+-----------+-----------+-----------+-----------+ |id | parent_id | name | order | status | date_add | +-----------+-----------+-----------+-----------+-----------+-----------+ |1 | 0 | shoes | 1 | 1 | 2011-04-02| +-----------+-----------+-----------+-----------+-----------+-----------+ |2 | 1 | male | 2 | 1 | 2011-04-02| +-----------+-----------+-----------+-----------+-----------+-----------+ |3 | 1 | female | 3 | 1 | 2011-04-02| +-----------+-----------+-----------+-----------+-----------+-----------+ |4 | 3 | red shoes | 4 | 1 | 2011-04-02| +-----------+-----------+-----------+-----------+-----------+-----------+ 

Я хочу выбрать только детей с листьями, их путь.

Я хочу прийти к результату следующим образом:

 +------+-------------------------------------+ | 2 | shoes/male | +------+-------------------------------------+ | 4 | shoes/female/red shoes | +------+-------------------------------------+ 

если это не только sql может также быть php + sql

Пожалуйста, помогите мне.

Solutions Collecting From Web of "mysql + php извлекает листовые дети с помощью пути"

Очень простое решение для печати id и пути ко всем последним дочерним узлам с использованием PHP, поскольку я не знаю, как это сделать в MySQL. Надеюсь это поможет!

 function getChildren($parent= "", $x = 0) { $sql = "SELECT id, name FROM recurr WHERE parentId = $x"; $rs = mysql_query($sql); //echo "Name: $parent has ". mysql_num_rows($rs)." children<br/>"; while ($obj = mysql_fetch_object($rs)) { if (hasChildren($obj->id)) { getChildren($parent."/".$obj->name, $obj->id); } else { echo $obj->id .", ".$parent."/".$obj->name."<br/>"; } } } function hasChildren($x) { $sql = "SELECT * FROM recurr WHERE parentId = $x"; $rs = mysql_query($sql); if (mysql_num_rows($rs) > 0) { return true; } else { return false; } } 

Чтобы запустить только вызов:

 getChildren(); 

Я настоятельно рекомендую реализовать вложенную модель набора для иерархических данных MySQL. Вот ссылка для получения дополнительной информации: http://mikehillyer.com/articles/managing-hierarchical-data-in-mysql/ . В ссылке вы также найдете ответ на свой вопрос (в разделе «Модель списка кандидатов», «Поиск всех узлов листа»)