Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Компьютеры + Интернет » Вебмастеру » Удаление записей таблицы по данным другой таблицы

Ответить
Настройки темы
Удаление записей таблицы по данным другой таблицы

Старожил


Сообщения: 160
Благодарности: 0

Профиль | Отправить PM | Цитировать


Есть 2 таблицы: root,dir
Такой структуры
ROOT:
| id | name | id_PC |
| 1 |_ first _| 9 |
| 2 | second| 9 |

DIR:
| id | id_root | name |
| 5 |___ 1 __| one |
| 6 |___ 1 __| two |
| 7 |___ 2 __| one |
|12|___ 2 __| two |
|13|___ 2 __|three|
|21|___ 2 __| four |

И нужно осущетвить такой запрос:

Удалить запись из таблицы ROOT с id_PC = 9
При этом следом должны удалиться все записи из dir у которых id_root равно id удаленных записей из ROOT


Делал таким путем: выбрал список ROOT
Потом по id этих записей ROOT удалил из DIR где id_root совпадают с данными id, с одной стороны все правильно, но запросов не мало получается, можно ли одним запросом это сделать? Или минимальным их количеством?

Отправлено: 17:17, 31-07-2013

 
mar mar вне форума

Аватара для mar

just mar


Moderator


Сообщения: 3904
Благодарности: 163

Профиль | Отправить PM | Цитировать


xNiSSaNx,
Вы не указали самое главное - в какой СУБД работаете. Видимо, раз не указали, то это mysql?
То, что Вы хотите, можно делать, создав триггер, т.е. процедуру, которая будет автоматически выполняться в случае определенного типа запросов (в данном случае - при удалении записей из таблицы).
Что-то вроде:
Код: Выделить весь код
CREATE TRIGGER del_t_one BEFORE DELETE ON t_one
 FOR EACH ROW BEGIN
    DELETE FROM t_two WHERE id_root = OLD.id;
  END
где t_one и t_two - это названия первой и второй таблицы, del_t_one - название триггера
Это сообщение посчитали полезным следующие участники:

Отправлено: 17:25, 31-07-2013 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Старожил


Сообщения: 160
Благодарности: 0

Профиль | Отправить PM | Цитировать


Цитата mar:
где t_one и t_two - это названия первой и второй таблицы, del_t_one - название триггера »
Почему то не удаляет, ни из dir, ни из root

Отправлено: 19:30, 31-07-2013 | #3

mar mar вне форума

Аватара для mar

just mar


Moderator


Сообщения: 3904
Благодарности: 163

Профиль | Отправить PM | Цитировать


xNiSSaNx,
а триггер-то написался и записался без ошибок? он должен быть виден в структуре базы данных
ну и, если ничего не удаляется, то должны появляться ошибки. Что там написано?

Отправлено: 12:07, 01-08-2013 | #4


Старожил


Сообщения: 160
Благодарности: 0

Профиль | Отправить PM | Цитировать


Цитата mar:
Что там написано? »
ошибок не выдает, но не все записи удаляются, которые должны

Спасибо и на это, сделал по другому

Отправлено: 21:58, 02-08-2013 | #5



Компьютерный форум OSzone.net » Компьютеры + Интернет » Вебмастеру » Удаление записей таблицы по данным другой таблицы

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
VBA - Макрос создания документов Word по данным таблицы Excel RusGor Программирование и базы данных 4 01-11-2023 11:17
MySQL - [решено] Сортировка данных с таблы по содержимому другой таблицы xNiSSaNx Программирование и базы данных 5 13-04-2012 15:01
Удаление записей из таблицы по заданному времени на php magwolf Вебмастеру 5 14-08-2009 14:13
Mysql Выбор записей + к каждой count из другой таблицы benya Вебмастеру 11 26-05-2006 18:27
Удаление записей из таблицы MySQL unknown Вебмастеру 3 21-05-2003 14:54




 
Переход