|
|
|
| Задача: Получив ID элемента подняться по дереву и получить всех предков.
Ответ: Рекурсия.
По поиску посмотрел, и в общем-то ниче утешительного. Поэтому решил обновить тему, с главным вопросом: С 2006 года ниче не изменилось? В мускуле встроенных рекурсий не появилось? Все делать через ПХП и кучу запросов? | |
|
|
|
|
|
|
|
для: Sfinks
(22.02.2012 в 00:19)
| | Внешние ключи в InnoDB не выход? | |
|
|
|
|
|
|
|
для: cheops
(22.02.2012 в 00:26)
| | Вот мне этот вопрос ни о чем не говорит =) У меня в Мускуле логика работает, а теория страдает. Интуитивно как-то...... )) | |
|
|
|
|
|
|
|
для: Sfinks
(22.02.2012 в 02:51)
| | В MySQL несколько типов таблиц, наиболее известные это MyISAM и InnoDB. Каждая из них обладает уникальными характеристиками, например, MyISAM очень быстрые, так как не поддерживают транзакции и не расходуют ресурсы на них, зато поддерживают полнотекстовый поиск. InnoDB более медленные, но поддерживают транзакции и другие механизмы, вроде внешних ключей, когда удаление или обновление ключа приводит к каскадному удалению или обновлению всех потомков.
PS Существуют и подводные камни, очень трудно настроить сервер на эффективную поддержку одновременно и MyISAM и InnoDB. Вернее не трудно, если у вас много памяти на сервере. Если количество выделяемой MySQL памяти ограничено, очень часто настраивают только один механизм, а другой остается в ауте. Еще сложнее с виртуальным хостингом, как и для каких его целей настраивают зачастую выяснить довольно проблематично. | |
|
|
|
|
|
|
|
для: cheops
(22.02.2012 в 10:14)
| | Спасибо за пояснение!
Не, значит внешние ключи InnoDB - это не то. Я имел ввиду не обновление или удаление, а SELECT. Родительской ветки, либо всех потомков, либо еще чего. Valick меня правильно понял. | |
|
|
|
|
|
|
|
для: Sfinks
(22.02.2012 в 00:19)
| | nested sets | |
|
|
|
|
|
|
|
для: Valick
(22.02.2012 в 07:36)
| | Спасибо! Красиво ) Еще не дочитал, но красиво!
Видел подобные решения (с left и right key), но где parent_id выкидывают - первое! | |
|
|
|