У меня есть две таблицы:
Я использую этот запрос выбора, чтобы собрать самую низкую цену продуктов с таким же именем на listings table = (SELECT product_name, MIN(price) FROM product_listings GROUP BY product_name)
, $ продукта & $ MIN_PRICE переменные, которые я использую для двух полей соответственно.
Это прекрасно работает и дает мне самую низкую цену всех продуктов с одинаковым именем продукта.
product_name | Lowest price
Title | £0.69
Title | £7.98
Теперь я хочу обновить таблицу сведений о продукте (в частности, столбец «lower_price»), добавив эти данные, чтобы в каждом динамически отображаемом продукте отображалась цена самой дешевой из доступных копий.
Пока мне удалось обновить только одну запись с этим update query = ("UPDATE product_details SET lowest_price='$min_price' WHERE product_name='$product'");
Можно ли обновить все записи с помощью запроса на обновление, подобного этому? Почему обновляется только одна запись?
Предполагая, что у вас есть product_id в вашей таблице product_listings, которая относится к полю id в вашей таблице product_details, вы можете сделать это:
update products p
inner join (
select product_id, min(price) min_price
from product_listing
group by product_id
) pl
on p.id = pl.product_id
SET p.min_price = pl.min_price
Если это не так, и у вас есть только название продукта для присоединения (не очень хорошая идея), это будет так:
update products p
inner join (
select product_name, min(price) min_price
from product_listing
group by product_name
) pl
on p.product_name = pl.product_name
SET p.min_price = pl.min_price
Пример скрипки: http://sqlfiddle.com/#!9/9b928/1
Других решений пока нет …