Удаление всего содержимого каталога

Печать RSS
192

Ю
Автор
deleted
0
Добрый день.
Помогите составить алгоритм удаления (если это вообще возможно).
Имеются 2 таблицы catalog и pages.
Структура таблицы catalog:
-id id каталога
-name имя каталога
-subcat id материнского каталога

Структура таблицы pages:
-id id страницы
-name имя страницы
-cat id каталога в котором расположена статья

Ну так вот. Предположим, что имеется такая структура:
-Каталог 1
--Каталог 2
---Каталог 3
----Статья 1
----Статья 2

Необходимо Удалить Каталог 1 и всё, что находится ниже. Как это реализовать? Желательно привести пример с использованием PDO как в роторе (если нет возможности, то на простом MySql).

Добавлено через 03:31 сек.
Даже лучше просто объясните, как определить id всего того, что ниже Каталог 1
К

Айсберг Визави
0
Рекурсия или вторичные ключи. Или то и то вместе взятое.
Ю
Автор
deleted
0
Дело в том, что подразумевается бесконечная вложенность каталогов. А прибегать к таким строкам «1, 6, 7, 8...» в таблице не очень правильно
К

Айсберг Визави
0
разные бывают ситуации. бывает что нужно.
В твоем случае, если нет внешних ключей, нужно рекурсией вычислять. При условии, что есть ступенчатая связь(статья 1 в каталоге 1, каталог 1 в разделе 1), можно реализовать. Создаем выборку, в которой берем все записи каталога1, далее запросы(а их столько, сколько записей) в которых выбираем все статьи из следующего уровня и так пока не вернет NULL. Может не ясно что-то написал, просто устал немного)
Изменил: Кевин Митник (05.02.2013 / 06:41)

Голубые штаны
0
DELETE `catalog`,`pages` 
FROM `catalog` 
LEFT JOIN `pages` ON `catalog`.`id`=`pages.`cat` 
WHERE `catalog`.`id`=[color=#ff0000]1[/color];
Удалит из таблицы catalog строку с id=1 и все строки в таблице pages, в которых ячейка cat=1
Ю
Автор
deleted
0
5, а если в этом каталоге еще 50 подкаталогов, в которых тоже есть подкаталоги со статьями?
П

Пацак
0
Задача аналогичная выводу комментариев. Чтобы "определить id всего того, что ниже Каталог 1" среди каталогов нужно делать запросы вида
select id from catalog where subcat in 
(здесь список id, возвращенного предыдущим таким запросом, в начале состоит просто из единицы)
Дальше, когда у нас есть список всех каталогов, все довольно очевидно
Изменил: Петр (05.02.2013 / 09:41)
Ю
Автор
deleted
0
7, О, вот это уже интересно, спасибо) попробую
Стикеры / Теги / Правила / Топ тем / Топ постов / Поиск