Написал два запроса на удаление категорий и записей в ней+ подкатегорий и записей в ней.
Как теперь их объединить в один запрос?помогите пожалуйста
1. DELETE `category`, `pages` FROM `category`, `pages` WHERE `category`.`id` = `pages`.`id_category` AND `category`.`id` = '$cat_id'
2. DELETE `category`, `pages` FROM `category`, `pages` WHERE `category`.`id` = `pages`.`id_category` AND `category`.`parent_id` = '$cat_id'
1. mobix - 11 Апреля, 2016 - 01:03:12 - перейти к сообщению
2. armancho7777777 - 11 Апреля, 2016 - 08:47:05 - перейти к сообщению
Для хранения данных используйте подсистему INNODB (если речь конечно о MySQL) и организуйте соответствующие связи:
1. `category`.`id` -> `pages`.`category_id`
2. `category`.`parent_id` -> `category`.`id`
У `category`.`parent_id` должно быть по умолчанию NULL.
А в связях ON DELETE SET NULL либо ON DELETE cascade, в зависимости от задачи/условий.
Для `pages`.`category_id` ON DELETE cascade.
И тогда достаточно будет выполнить:
1. `category`.`id` -> `pages`.`category_id`
2. `category`.`parent_id` -> `category`.`id`
У `category`.`parent_id` должно быть по умолчанию NULL.
А в связях ON DELETE SET NULL либо ON DELETE cascade, в зависимости от задачи/условий.
Для `pages`.`category_id` ON DELETE cascade.
И тогда достаточно будет выполнить:
Если у страницы может быть несколько категорий (одна и та жа страница может выводиться в разных категориях как товар в интернет магазине),
то связи выносятся в отдельную таблицу из трёх колонок:
id // primary autoincrement
category_id // -> category.id
page_id // -> page.id