Здравствуйте. есть три таблицы. 1. Разделы section.id - первичный ключ. 2. Категории categories.id - первичный ключ. categories.section - вторичный ключ (связ одни-ко многим с таблицей Разделы) 3. Товары items.id - первичный ключ. items.category - вторичный ключ (связ одни-ко многим с таблицей Категории) Необходимо удалить определенный раздел и все что с ним связанно. С первыми двумя таблицами все просто: PHP: <?php include('../db.php'); $res = mysql_query(" DELETE FROM `section` WHERE `id`=".intval($_GET['sec_id'])); $res = mysql_query(" DELETE FROM `categories` WHERE `id`=".intval($_GET['sec_id'])); ?> (sec_id переменная куда заносится выбранный раздел для удаления) а как удалить из таблицы Товары все что связанно с определенным разделом? Понимаю что надо сделать выборку по Товарам: [sql] SELECT `items` . * FROM `items` LEFT JOIN `categories` ON `items`.`category` = `categories`.`id` LEFT JOIN `section` ON `categories`.`section` = `section`.`id` [/sql] но как теперь это впихнуть в запрос для удаления?
1. внешний ключ с каскадным обновлением 2. триггер 3. [sql] DELETE FROM tovar WHERE cat_id IN (SELECT id FROM categories WHERE sec_id=id_раздела); DELETE FROM categories WHERE sec_id = id_рвздела; DELETE FROM section WHERE id=id_раздела; [/sql] 4. По моему как то можно из этих трех запросов сделать 2 или даже один
хмм звучит как-то сложно =) должен быть вариант попроще... но попробую покопаться... а за вложенный селект спасибо =)
хмм пробую удалять так: PHP: $res = mysql_query(" DELETE FROM `section` WHERE `id`=".intval($_GET['sec_id'])); $res = mysql_query(" DELETE FROM `categories` WHERE `category`=".intval($_GET['sec_id'])); до этого работает таблицы section и categories чистит а вот следующий запрос не удаляют значения: PHP: $res = mysql_query(" DELETE FROM `items` WHERE `category` IN (SELECT `id` FROM `categories` WHERE `id`=".intval($_GET['sec_id'])));