Я работаю с некоторыми довольно уязвимыми данными, таким образом, я хочу быть АБСОЛЮТНО уверенным, что я делаю их правильно.
Я пытаюсь удалить строки в таблице, которые связаны с другой таблицей
Единственный способ связать таблицу состоит в том, чтобы присоединиться через две других таблицы...
вот точный запрос:
DELETE tt.Transaction_Amount, tt.Transaction_ID
FROM ItemTracker_dbo.Transaction_Type tt
JOIN ItemTracker_dbo.Transaction t ON tt.Transaction_ID = t.Transaction_ID
JOIN ItemTracker_dbo.Purchase p ON p.Transaction_ID = tt.Transaction_ID
JOIN ItemTracker_dbo.Item i ON i.Item_ID = p.Item_ID
WHERE i.Client_ID = 1
Как Вы видите, это не симпатично.
Я получаю нечетную ошибку, хотя через MySQL запрашивают браузер...
Таблица Unkown 'Transaction_Amount' во МНОГО УДАЛЯЕТ
Я попытался читать mysql руководство, и кажется, что это должно работать мне... у кого-либо есть какая-либо идея?
] Нужно удалять строки из []tt[
], а не отдельные колонки: [
DELETE tt
FROM ItemTracker_dbo.Transaction_Type tt
JOIN ItemTracker_dbo.Transaction t ON tt.Transaction_ID = t.Transaction_ID
JOIN ItemTracker_dbo.Purchase p ON p.Transaction_ID = tt.Transaction_ID
JOIN ItemTracker_dbo.Item i ON i.Item_ID = p.Item_ID
WHERE i.Client_ID = 1
] ] Синтаксис неверен - вы [] не ссылаетесь на столбцы [] между [] DELETE [
] и [] FROM [
]. Используйте:[
DELETE FROM ItemTracker_dbo.Transaction_Type tt
JOIN ItemTracker_dbo.Transaction t ON tt.Transaction_ID = t.Transaction_ID
JOIN ItemTracker_dbo.Purchase p ON p.Transaction_ID = tt.Transaction_ID
JOIN ItemTracker_dbo.Item i ON i.Item_ID = p.Item_ID
WHERE i.Client_ID = 1
]
[]Чтобы быть уверенным, что вы удаляете правильные вещи, я согласен с wallyk, что вы должны проверить вывод SELECT утверждения, что то, что возвращается, это то, что вы хотите удалить до этого. В противном случае, выполните удаление в транзакции, чтобы при необходимости можно было откатить его обратно.[
].] Вы должны составить его изначально как запрос на возврат интересующих строк. После того, как все это будет отлажено, затем преобразовать в delete.[
]