У меня есть таблица базы данных который расположения ссылки вместе; местоположение может быть в месте, которое может быть в другом местоположении.
location (<id>, ....)
location_parent (<location_id>, <parent_id>)
Вот MySQL/PHP для потери работоспособности для глубины одной:
$sql = "SELECT id FROM se_locations_services WHERE parent_locationid IN
( SELECT location_id FROM se_locations_parent WHERE parent_id = '$locationid' )";
Как делают я, учитывая родительское местоположение, получаю все его местоположения потомков, неважно, как глубоко, просто с помощью MySQL?
На mysql.com есть красивая статья , в которой описаны различные способы управления иерархическими данными. Я думаю, что он дает полное решение вашего вопроса и показывает различные менее простые, но более быстрые подходы (например, вложенные наборы).
В MySQL
отсутствует встроенная поддержка иерархических функций, поэтому вам придется эмулировать их, используя переменные сеанса, чтобы сохранить состояние рекурсии.
См. Эту статью о том, как реализовать функцию:
Поскольку операторы mysql могут возвращать только данные с табличной структурой, как вы себе представляете возвращаемую древовидную структуру?
Можно сделать выбор с помощью таблицы [parent_id, child_id], но для этого требуется временная таблица, и я видел это в DB2, а не в MySQL.
Проверьте эту статью на предмет реализации на древовидных структурах, хранящихся в MySQL: http://articles.sitepoint.com/article/hierarchical-data-database/
Гораздо лучшим способом управления данными такого рода является использование техники Modified Preorder Tree Traversal:
http://articles.sitepoint.com/article/hierarchical-data-database/2
hth
w://