рекурсивный сам запрос

У меня есть следующая таблица:

myTable: +----+----------+ | id | parentID | +----+----------+ | 1 | null | | 2 | 1 | | 3 | 1 | | 4 | 2 | | 5 | 4 | ----------------- 

Я бы хотел, чтобы все строки отслеживались, пока нет родительского идентификатора. Поэтому «…. WHERE id = 5» даст мне:

 5, 4, 2, 1 

Вы организуете свои иерархические данные, используя модель списка смежности . Тот факт, что такие рекурсивные операции сложны, на самом деле является одним из главных недостатков этой модели.

Некоторые СУБД, такие как SQL Server 2005, Postgres 8.4 и Oracle 11g, поддерживают рекурсивные запросы, используя общие выражения таблиц с ключевым словом WITH .

Что касается MySQL, вы можете быть заинтересованы в проверке следующей статьи, в которой описывается альтернативная модель (модель вложенного набора ), что делает рекурсивные операции более легкими (возможными):

  • Майк Хиллиер: Управление иерархическими данными в MySQL

Кроме того, я также предлагаю проверить представленность Билла Карвина в комментариях выше. Описанная модель таблицы замыкания является очень эффективной альтернативой вложенному набору.

Давайте будем гением компьютера.