2015-11-11 3 views
0

у меня есть 2 таблицы в SQL Server (я не создавал эти таблицы, но я должен работать с ними):SQL удалить запись из 2 таблиц

document 
- document_id 
- created_date 

trade_document 
- trade_document_id 
- document_id *foreign key to document table 

Сегодня, я добавил несколько новых trade_document записей (который автоматически создает связанные document_id, это делается с использованием ORM), но я хочу удалить все эти записи.

Я хочу сделать удалений по отношению к added_date в document таблице

где created_date> вчера

Я также хочу, связанных document запись будет удалена.

Я не очень хорошо с SQL, все, что я до сих пор является основной шаблон, который ничего не делает:

DELETE FROM db.schema.trade_document (I'm guessing some sort of join on document) 
WHERE document.created_date > 11/10/15 

он не имеет не одно заявление, может быть кратным

+1

ли это быть один ВЕЬЕТЕ? Почему бы не удалить сначала документ trade_document, а затем документ? – jmugz3

+1

Вы не можете удалить из двух таблиц за один раз. –

+0

@JoseM Мне все равно, сколько заявлений есть. Но мой вопрос в основном, как я могу удалить из 'trade_document' относительно даты в таблице документов –

ответ

6

Вам нужно два удаления статуи и в этом порядке.

DELETE FROM db.schema.trade_document 
WHERE document_id IN (SELECT document_id 
         FROM document 
         WHERE created_date > 11/10/15); 


DELETE FROM db.schema.document 
WHERE created_date > 11/10/15); 

Для справки вы можете также создать свой стол, используя DELETE CASCADE

How do I use cascade delete with SQL Server?

+0

круто спасибо, я пытаюсь это сделать сейчас –

+0

Я знаю, что вы не создали таблицу, но я добавляю информацию для предложения' DELETE CASCADE ' –

+0

да нет проблем, я хочу поправиться с sql, так что это очень полезно! –

Смежные вопросы