РЕДАКТИРАНЕ
работна проба, адресираща бележката на Гордън
Заявка за изчисляване на пътя на възела, тъй като сте фиксирали максималната дълбочина на дървото, и подредете по него.
Настройка на схемата на MySQL 5.5.30 :
създайте таблица mytable(id int, parent_id int, name varchar(100));вмъкнете mytable(id, parent_id, name)values (1, null, 'Home'), (2, null, 'Services '),(3, 2, 'Печене'), (4, 3, 'Торти'), (5, 3, 'Хляб'), (6, 5, 'Плосък хляб'), (7, 1, ' Нещо');
Запитване 1 :
изберете t0.*, concat( case coalesce(t4.Parent_ID, 0) когато е 0, след това '' else concat(cast(t4.Parent_ID като char), '\\') end, case coalesce(t3 .Parent_ID, 0), когато 0, тогава '' else concat(cast(t3.Parent_ID като char), '\\') край, case coalesce(t2.Parent_ID, 0), когато 0, тогава '' else concat(cast(t2. Parent_ID като char), '\\') край, case coalesce(t1.Parent_ID, 0), когато 0, след това '' else concat(cast(t1.Parent_ID като char), '\\') край, case coalesce(t0. Parent_ID, 0) когато 0 след това '' else concat(cast(t0.Parent_ID като char), '\\') end, cast(t0.id като char) ) като път от моята таблица t0 наляво присъедини към mytable t1 на t0.Parent_ID =t1.Id left join mytable t2 на t1.Parent_ID =t2.Id left join mytable t3 on t2.Parent_ID =t3.Id left join mytable t4 on t3.Parent_ID =t4.Idorder by concat( case coalesce(t4.Parent_ID, 0). ) когато 0, тогава '' else concat(cast(t4.Parent_ ID като char), '\\') край, case coalesce(t3.Parent_ID, 0), когато 0, след това '' else concat(cast(t3.Parent_ID като char), '\\') край, case coalesce(t2. Parent_ID, 0), когато 0, тогава '' else concat(cast(t2.Parent_ID като char), '\\') край, case coalesce(t1.Parent_ID, 0), когато 0, тогава '' else concat(cast(t1.Parent_ID като char), '\\') край, case coalesce(t0.Parent_ID, 0) когато 0 след това '' else concat(cast(t0.Parent_ID като char), '\\') end, cast(t0.id като char) )
<предварителен код>| ID | PARENT_ID | ИМЕ | ПЪТ |---------------------------------------| 1 | (нула) | Начало | 1 || 7 | 1 | Нещо | 1\7 || 2 | (нула) | Услуги | 2 || 3 | 2 | Печене | 2\3 || 4 | 3 | Торти | 2\3\4 || 5 | 3 | Хляб | 2\3\5 || 6 | 5 | Плосък хляб | 2\3\5\6 |