Mysql как обновить несколько записей без указания значения внешнего ключа - PullRequest
0 голосов
/ 25 марта 2020

У меня есть таблица, которая выглядит следующим образом:

Table - order
id purchase_order_item_id amount
1  1324                   0.0
2  2435                   50.2
3  5643                   87.2
4  6475                   0.0

Table - purchase_order_item
id                     item_id
1324                   82
2435                   83
5643                   84
6475                   85

Table - item
id                     amount
82                   76.1
83                   50.2
84                   87.2
85                   65.9

Теперь я хочу проверить, имеет ли таблица Order значение 0.0 для суммы. В этом случае мне нужно получить данные о количестве из элемента таблицы (Order-> purchase_order_item-> item) и обновить в таблице заказов.

Я написал ниже запрос на обновление, который не запущен. Пытаясь исправить его.

UPDATE order
INNER JOIN purchase_order_item ON purchase_order_item.id =     order.purchase_order_item_id
SET 
order.amount= 
(
SELECT item.amount from item
INNER JOIN purchase_order_item ON purchase_order_item.item_id=item.id
)
where order.amount=0.0;

Я новичок в mysql запросе и пытаюсь написать правильный запрос на обновление.

1 Ответ

1 голос
/ 25 марта 2020

Я думаю, что вам нужен синтаксис update ... join:

update orders o
inner join purchase_order_items poi on poi.id = p.purchas_order_item_id
inner join items i on i.id = poi.item_id
set o.amount = i.amount
where o.amount = 0

Примечание: order - зарезервированное слово в MySQL (как и для других баз данных), поэтому я переименовал таблицу в orders (я также расшифровал другие имена таблиц, чтобы сделать их согласованными).

...