У меня есть производная таблица, которая определяется как:
SELECT *
FROM customers INNER JOIN
(
SELECT customers.customer_id, SUM(clothingitem.price) AS Total FROM 'customerorderstoclothingitem'
INNER JOIN customerorders ON customerorderstoclothingitem.orderid =
customerorders.orderid
INNER JOIN customers ON customers.customer_id = customerorders.customerid
INNER JOIN clothingitem ON clothingitem.clothingItemID =
customerorderstoclothingitem.clothingitemid
GROUP BY customers.customer_id
) dTable ON dTable.Total > 300 AND customers.customer_id = dTable.customer_id
Я попытался использовать следующий запрос:
UPDATE customers SET customers.discount = 0.3
FROM customers INNER JOIN
(
SELECT customers.customer_id, SUM(clothingitem.price) AS Total FROM 'customerorderstoclothingitem'
INNER JOIN customerorders ON customerorderstoclothingitem.orderid = customerorders.orderid
INNER JOIN customers ON customers.customer_id = customerorders.customerid
INNER JOIN clothingitem ON clothingitem.clothingItemID = customerorderstoclothingitem.clothingitemid
GROUP BY customers.customer_id
) dTable ON dTable.Total > 300 AND customers.customer_id = dTable.customer_id
но я получаю сообщение об ошибке, что мой синтаксис неверен в строке 2, что означает, что по какой-то причине JOIN вызывает ошибку. Я считаю, что ошибка должна возникнуть из раздела обновления, как при использовании select, при этом не возникает ошибка, и она выполняется, как ожидалось.
Вы можете напрямую присоединиться к таблице клиентов с производной таблицей, как показано ниже:
UPDATE customers INNER JOIN (
// Your SELECT query for derived table
) dTable ON customers.customer_id = dTable.dTable.customer_id
SET customers.discount = 0.3