Выберите значение MAX из таблицы SQL для применения в другой таблице.

Мой сайт — Prestashop (1.5.6.2).

Некоторые из моих продуктов могут иметь более низкую цену в зависимости от количества заказанного продукта. И я бы хотел упомянуть где-нибудь минимальную цену продукта (поэтому мне нужно максимальное количество скидок, чтобы это произошло).

Таблица 1 (моя цена в этой таблице)

+------------+-------+
| id.product | price |
+------------+-------+
|          1 |  1000 |
+------------+-------+

Таблица 2 (мое сокращение в этой таблице)

+------------+--------+-----------+
| id.product | amount | reduction |
+------------+--------+-----------+
|          1 |      2 |       100 |
|          1 |      3 |       200 |
|          1 |      4 |       300 |
+------------+--------+-----------+

Согласно этому примеру, я хотел бы отобразить:

Товар 1 от 700 евро

1000 - 300 (which is the maximum reduction on product.id 1) = 700

(Я хотел бы ОБНОВИТЬ существующую цену, потому что это второе поле, которое я создаю на самом деле называется price_from но я не хотел усложнять пример)

Это мой код до сих пор:

UPDATE table1
INNER JOIN table2 ON (table1.id_product = table2.id_product )
SET table1.price = table1.price - (SELECT MAX(table2.reduction) FROM table2 GROUP BY id_product)

Есть идеи?

0

Решение

Попробуй это:

update table1
inner join (SELECT max(`reduction`) as maxprice, id FROM table2 group by id ) t
on
table1.id = t.id
SET
table1.price = table1.price - t.maxprice
0

Другие решения

Если вы хотите отобразить только измененную цену, используйте это:

select t1.id_product, (price - max_reduction) as new_price
from table1 t1 inner join (
select id_product, max(reduction) max_reduction FROM table2
GROUP BY id_product
) t2 on t1.id_product = t2.id_product

Если вы хотите изменить цену, попробуйте это:

update table1 t1, (
select id_product, MAX(t2.reduction) as max_reduction
FROM table2 t2
GROUP BY id_product) t2
SET t1.price = t1.price - t2.max_reduction
WHERE t1.id_product = t2.id_product;
1

По вопросам рекламы [email protected]