2013-03-06 4 views
1

Как я могу изменить этот код, чтобы он удалял записи из обеих таблиц, из которых он получает информацию?Удалить запрос для нескольких таблиц

SELECT products_description.products_name, products.products_id 
FROM products INNER JOIN products_description ON products.products_id =    products_description.products_id 
WHERE (((products.products_ordered)=0) AND ((products.products_status)=0)); 

Я новичок в SQL кодирования, поэтому, пожалуйста, простите меня, если это глупый вопрос.

+0

Очевидно, мне придется сменить SELECT на DELETE, но он просит указать таблицу. Как указать оба? –

+0

Вы установили отношения между таблицами. При удалении каскад может выполнять работу, но вам нужно подумать о том, что это будет означать для вас дизайн. См. Http://office.microsoft.com/en-gb/access-help/delete-one-or-more-records-from-an-access-database-HA001173951.aspx –

ответ

1

Вы можете сделать это с отношениями и одним запросом.

  1. установить связь между products и products_description на основе общего поля products_id
  2. Установите флажок в поле для «обеспечения ссылочной целостности»
  3. Установите флажок в поле для «Каскад Удалить Связанные Записи»
  4. сохранить отношения

Затем этот запрос будет удалять строки из products, а также любые products_description строк, которые включают значения products_id, соответствующие значениям удаленных строк products.

DELETE FROM products 
WHERE 
     products.products_ordered=0 
    AND products.products_status=0; 

Если вы идете по этому маршруту, убедитесь, что вы понимаете последствия. В качестве дополнительной защиты создайте и проверьте резервную копию данных, которые вы хотите сохранить. ;-)

+0

+1 вы вошли в более подробную информацию, затем я может в этот момент. :) – Taryn

+0

он не позволяет мне проверять какие-либо параметры –

+0

Обе таблицы в одной базе данных ... или одна ссылка на таблицу в другой базе данных? Вы можете только обеспечить ссылочную целостность между таблицами в одной и той же базе данных. – HansUp

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