DELETE из нескольких таблиц по ID

nick4

Guest
DELETE из нескольких таблиц по ID

Основная таблица называется "news"
существуют таблицы которые ссылаются на эту с помощью идентификатора "id" он присутсвует в каждой таблице,
в таблице news есть поле "date" (timestamp) - дата добавления
есть поле "comments" (int) - кол-во комментариев

необходимо сделать запрос DELETE так чтобы:

a) Удалились записи из таблицы "news" по условию
WHERE news.date < SUBDATE(NOW(),INTERVAL 50 DAY) AND news.comments < 5
б) По колонке ID удалились все записи из других таблиц

подскажите как написать условие?
 

ForJest

- свежая кровь
nick4
1. Выбираешь ids по своему условию
2. Удаляешь по выбранным ids из других таблиц
3. Удаляешь по выбранным ids из основной таблицы.
Можешь использовать IN ()

В MySQL 4.0.x можно использовать синтаксис DELETE для нескольких таблиц.
 

nick4

Guest
Originally posted by ForJest
nick4
1. Выбираешь ids по своему условию
2. Удаляешь по выбранным ids из других таблиц
3. Удаляешь по выбранным ids из основной таблицы.
Да именно так я и делал, но я немного не правильно сформулировал вопрос, в колонке news нету поля "comments", оно есть как раз наоборот в других таблицах, тоесть примерная структура таблиц такая

Код:
[news]
id, date

[table_1]
id, comments

[table_2]
id, comments
мне нужно помимо того что использовать условие
WHERE news.date < SUBDATE(NOW(),INTERVAL 50 DAY)
еще создать конструкцию вроде IF для поля comments остальных таблиц..

должно получится так:
1. Смотрим таблицу news.date на предмет устаревших в течении 50 дней запросов,
2. Проходимся по таблицам table_1,table_2 в поисках этих ID
3. Удаляем значения из таблиц table_1,table_2 только если поля comments меньше 5
4. Если удален ID из всех таблиц - значит удаляем его и из главной

я думаю это можно как-то скомпоновать рациональнее чем перебором всех таблиц циклом, хотелось-бы чтобы основную работу сделала MySQL?

У меня стоит MySQL 4.0.23
 

alexon

Новичок
Re: DELETE из нескольких таблиц по ID

Автор оригинала: nick4
Основная таблица называется "news"
существуют таблицы которые ссылаются на эту с помощью идентификатора "id" он присутсвует в каждой таблице,
в таблице news есть поле "date" (timestamp) - дата добавления
есть поле "comments" (int) - кол-во комментариев

необходимо сделать запрос DELETE так чтобы:

a) Удалились записи из таблицы "news" по условию
WHERE news.date < SUBDATE(NOW(),INTERVAL 50 DAY) AND news.comments < 5
б) По колонке ID удалились все записи из других таблиц

подскажите как написать условие?
FOREIGN KEY поставь в таблицах и можешь забыть, что что то надо будет удалять руками.
 

Yurik

/dev/null
alexon: есть мнение что автор даже не знает что такое InnoDB, а ты говоришь о каких то FOREIGN KEY
 
Сверху