Модераторы: skyboy
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [MySQL]Удалить все дерево 
:(
    Опции темы
Acrobat
Дата 1.6.2008, 17:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 29
Регистрация: 4.4.2007

Репутация: нет
Всего: нет



Здравствуйте, задача такая:
Есть такая структура: id, pid, name, в которой хранится дерево каталогов неограниченной вложенности. Если pid = 0, значит это корневой каталог.
Вопрос такой: Можно ли без рекурсий (одним вложенным запросом) удалить все дерево каталогов?
Заранее благодарен!
PM MAIL   Вверх
skyboy
Дата 1.6.2008, 19:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 15
Всего: 260



одним запросом используя просто SQL - нет.
возможные варианты зависят от:
- СУБД и механизмов СУБД, которые можно использовать
- степени привелечения в процесс клиентской программы
PM MAIL   Вверх
Acrobat
Дата 1.6.2008, 21:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 29
Регистрация: 4.4.2007

Репутация: нет
Всего: нет



Извиняюсь, забыл сказать. СУБД - MySql
Работа происходит с помощью php скрипта.
PM MAIL   Вверх
skyboy
Дата 1.6.2008, 21:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 15
Всего: 260



какой engine используется? у innoDB есть механизм внешних ключей(foreign key), который позволяет, следуя связи между таблицами, удалять "подчиненные" записи при удалении "главной".
версия какая? начиная с 5-й версии доступен механизм триггеров, которые позволяют за действием удаления закрепить некое действие в виде последовательности запросов.
также возможно удаление при помощи механизма хранимых процедур, которые не дадут тебе "один запрос"(кстати, зачем такое ограничение? задание учебное, что ли?), но позволять этот набор запросов скрыть за одним именем вызываемой процедуры.
такие операции, связанные с обработкой не отдельных узлов, а целых ветвей - правило или исключение? если часто приходится выбирать/удалять непосредственно целыми "ветвями", то может стоит перейти к структуре хранения nested sets?
PM MAIL   Вверх
Acrobat
Дата 1.6.2008, 23:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 29
Регистрация: 4.4.2007

Репутация: нет
Всего: нет



эээ... skyboy, спасибо за такое количество информации, но для меня это пока трудно..=(
Задание не учебное, версия mysql 4. На самом деле нет ограничения в один запрос, просто я где то видел, правда для oracle, как нечто подобное можно было реализовать за один запрос.
Сейчас я просто хочу сделать более оптимизированный запрос.
И.. что такое триггер?


PM MAIL   Вверх
skyboy
Дата 1.6.2008, 23:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 15
Всего: 260



пожауйста.
*без сарказма* очень жаль, что пользоваться поисковиком ты ещё не научился. трудно тебе придется. 
foreign key
триггер
nested sets
PM MAIL   Вверх
Acrobat
Дата 2.6.2008, 11:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 29
Регистрация: 4.4.2007

Репутация: нет
Всего: нет



Спасибо, буду думать..
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Составление SQL-запросов | Следующая тема »


 




[ Время генерации скрипта: 0.0791 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.