2014-09-03 3 views
0

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

В том же дБ у меня есть две таблицы. Таблица задач содержит два столбца интереса пользователя и keyid. Хотя таблица действий имеет один столбец, представляющий интерес, это задача. Мне нужно удалить все задачи в задачах таблицы для определенного пользователя. Однако это также означает, что мне нужно удалить все действия для этих задач. Теперь, как они связаны, заключается в том, что ключевым значением в таблице задач является значение в столбце задачи в таблице действий.

Мой вопрос: как мне написать запрос DROP или DROP + JOIN для этого?

ответ

0

Вы можете использовать JOIN на этом, как:

DELETE Tasks, Activities 
FROM Tasks INNER JOIN Activities 
ON Tasks.KeyID = Activities.Task 
WHERE Tasks.User = 'User Name Here' 

Но было бы лучше, если вы используете ON DELETE CASCADE когда проектировал стол так, что вам придется удалить из маточного таблицы и все связанные записи дочерней таблицы также будут удалены автоматически.

См. Пример here.

+0

Я посмотрю ссылку, но прямо сейчас, я не хочу переделывать свои таблицы. – aarelovich

+0

Затем вы можете использовать один запрос вместо двух, как показано выше. – Edper

+0

Конечно, да. Я думаю, что это также легче следовать. Спасибо! – aarelovich

0

Вы могли бы сделать это в 2 отдельных запросах?

DELETE FROM activities WHERE task IN 
    (SELECT keyid FROM tasks WHERE user = 'CertainUser') ; 
DELETE FROM tasks WHERE user = 'CertainUser' ; 
+0

Полностью! У меня нет одного ограничения запроса. Я просто хочу знать, правильно ли я это понял. Первый запрос удалил все действия, так что задача столбца имела значение в наборе, что привело к запросу, в котором вы запрашивали все ключевые слова для задач определенного пользователя. Правильно ли я это понял? (Второй запрос очевиден) – aarelovich

+0

Да, это правильно :) – lpg

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