Удалить строки из нескольких таблиц на основе одного входа - PullRequest
2 голосов
/ 16 июня 2011

У меня есть три таблицы:

estate_field_data
estate_field_types
estate_fields

И единственный вход, который я получаю из браузера, это estate_field_types.ID = 3

estate_fields содержит определение для estate_field_types.ID => estate_fields.FieldType

Но estate_field_data не имеет определения для estate_field_types.ID, а вместо estate_field_data.FieldID => estate_fields.ID

Как мне удалить все три строки с этим единственным значением?

Спасибо! : -)

Ответы [ 2 ]

3 голосов
/ 16 июня 2011

Вы должны сделать это как 3 отдельных оператора (если вы не настроили каскадное удаление на ссылках внешнего ключа). Я предполагаю, что есть PK в estate_fields (я решил назвать его estate_field_id), на который ссылается estate_field_data (в противном случае, я не уверен, как мы определяем, что удалить из этой таблицы)

delete from estate_field_data where estate_field_id in (select estate_field_id from estate_fields where FieldType = 3)

delete from estate_fields where FieldType = 3

delete from estate_field_types where ID = 3
0 голосов
/ 16 июня 2011

Попробуй тоже с объединениями .... Дэмиен ... Должны ли мы предложить OP для использования Joins? Может быть быстрее в случае ОП?

Delete K From estate_field_data K
Inner Join estate_fields F on F.estate_field_id = K.estate_field_id
Where F.estate_field_id = 3
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...