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

Print RSS
193

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

Айсберг Визави
0
разные бывают ситуации. бывает что нужно.
В твоем случае, если нет внешних ключей, нужно рекурсией вычислять. При условии, что есть ступенчатая связь(статья 1 в каталоге 1, каталог 1 в разделе 1), можно реализовать. Создаем выборку, в которой берем все записи каталога1, далее запросы(а их столько, сколько записей) в которых выбираем все статьи из следующего уровня и так пока не вернет NULL. Может не ясно что-то написал, просто устал немного)
Changed: Кевин Митник (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
Ю
Author
deleted
0
5, а если в этом каталоге еще 50 подкаталогов, в которых тоже есть подкаталоги со статьями?
П

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