![]() |
|
Модераторы: skyboy |
![]()
|
|
| Acrobat |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 29 Регистрация: 4.4.2007 Репутация: нет Всего: нет |
Здравствуйте, задача такая:
Есть такая структура: id, pid, name, в которой хранится дерево каталогов неограниченной вложенности. Если pid = 0, значит это корневой каталог. Вопрос такой: Можно ли без рекурсий (одним вложенным запросом) удалить все дерево каталогов? Заранее благодарен! |
|||
|
||||
| skyboy |
|
|||
|
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 15 Всего: 260 |
одним запросом используя просто SQL - нет.
возможные варианты зависят от: - СУБД и механизмов СУБД, которые можно использовать - степени привелечения в процесс клиентской программы |
|||
|
||||
| Acrobat |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 29 Регистрация: 4.4.2007 Репутация: нет Всего: нет |
Извиняюсь, забыл сказать. СУБД - MySql
Работа происходит с помощью php скрипта. |
|||
|
||||
| skyboy |
|
|||
|
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 15 Всего: 260 |
какой engine используется? у innoDB есть механизм внешних ключей(foreign key), который позволяет, следуя связи между таблицами, удалять "подчиненные" записи при удалении "главной".
версия какая? начиная с 5-й версии доступен механизм триггеров, которые позволяют за действием удаления закрепить некое действие в виде последовательности запросов. также возможно удаление при помощи механизма хранимых процедур, которые не дадут тебе "один запрос"(кстати, зачем такое ограничение? задание учебное, что ли?), но позволять этот набор запросов скрыть за одним именем вызываемой процедуры. такие операции, связанные с обработкой не отдельных узлов, а целых ветвей - правило или исключение? если часто приходится выбирать/удалять непосредственно целыми "ветвями", то может стоит перейти к структуре хранения nested sets? |
|||
|
||||
| Acrobat |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 29 Регистрация: 4.4.2007 Репутация: нет Всего: нет |
эээ... skyboy, спасибо за такое количество информации, но для меня это пока трудно..=(
Задание не учебное, версия mysql 4. На самом деле нет ограничения в один запрос, просто я где то видел, правда для oracle, как нечто подобное можно было реализовать за один запрос. Сейчас я просто хочу сделать более оптимизированный запрос. И.. что такое триггер? |
|||
|
||||
| skyboy |
|
|||
|
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 15 Всего: 260 |
пожауйста.
*без сарказма* очень жаль, что пользоваться поисковиком ты ещё не научился. трудно тебе придется. foreign key триггер nested sets |
|||
|
||||
| Acrobat |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 29 Регистрация: 4.4.2007 Репутация: нет Всего: нет |
Спасибо, буду думать..
|
|||
|
||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Составление SQL-запросов | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |