Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: два запроса delete в одном
Форумы портала PHP.SU » » Вопросы новичков » два запроса delete в одном

Страниц (1): [1]
 

1. mobix - 11 Апреля, 2016 - 01:03:12 - перейти к сообщению
Написал два запроса на удаление категорий и записей в ней+ подкатегорий и записей в ней.
Как теперь их объединить в один запрос?помогите пожалуйста

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'
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.

И тогда достаточно будет выполнить:
CODE (SQL):
скопировать код в буфер обмена
  1. DELETE FROM category WHERE id = ?;


Если у страницы может быть несколько категорий (одна и та жа страница может выводиться в разных категориях как товар в интернет магазине),
то связи выносятся в отдельную таблицу из трёх колонок:
id // primary autoincrement
category_id // -> category.id
page_id // -> page.id
3. mobix - 12 Апреля, 2016 - 00:30:00 - перейти к сообщению
Спасибо больше за развернутый ответ! Благодаря Вам я наконец разобрался
4. armancho7777777 - 12 Апреля, 2016 - 06:48:21 - перейти к сообщению
Не за что.
Почитайте про типы связей между таблицами (например эту статью на хабре) для общего понимания.

 

Powered by ExBB FM 1.0 RC1