MySQL - как запросить дерево? - PullRequest
2 голосов
/ 18 мая 2011

Допустим, у меня есть следующая таблица:

TABLE: category
 - category_id (PK)
 - parent_id (FK)
 - name

Учитывая значение для category_id, как я могу вернуть данный category_id и всех его потомков?

1 Ответ

3 голосов
/ 18 мая 2011

Если вам нужен уровень single , вы должны выполнить SELECT с условием category_id = id OR parent_id = id - но с MySQL вы не можете получить полное дерево одним запросом.

Вы можете написать хранимую процедуру, чтобы просмотреть все промежуточные результаты и выбрать дочерние элементы, но на самом деле это не очень аккуратно.

Вместо этого вы можете изменить дизайн своего стола. На сайте разработчиков MySQL есть хорошая статья о том, как вы можете хранить иерархические данные в таблице, и предоставляет дизайн, который намного более гибок, чем просто использование parent_id.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...