[英]Update table column based on another table values in MYSQL
假设我有2张桌子:
第一个是产品 :
+------------------+-----------------+--------+
| Product Name | Type | Price |
+------------------+-----------------+--------+
| Carrots | Vegetables | 10 |
| Oranges | Fruits | 20 |
| Beer | Drinks | 50 |
| Milk | Dairy products | 30 |
| Burgers | meat | 40 |
| Baguettes | bread | 10 |
第二个是Combos :
+-----------+---------+-----------+-------------+
| Item1 | Item2 | Item3 | TotalPrice |
+-----------+---------+-----------+-------------+
| Carrots | Oranges | Beer | |
| Milk | Burgers | Baguettes | |
+-----------+---------+-----------+-------------+
我想根据产品总价更新每个组合的总价。
例如,Milk,Burgers和Baguettes组合的“ TotalPrice”列为80。
我该如何实现?
您可以使用子查询根据组合项计算总和:
UPDATE combos SET total_price = (SELECT SUM(price) FROM products
WHERE product_name IN (item1, item2, item3));
您的方法不太正确,关系未正确表示。 考虑两个实体Product
和Combo
,以及它们之间的关系。 一个Combo
肯定可以有很多Product
,对吗? 而且,一个Product
可以属于许多Combo
,同意吗? 因此,这意味着两者之间的关系是many-to-many
。 要为这种关系建模,您需要第三个表Combo_Product
,仅当Product
属于Combo
时才包含记录。
使用此模型,您可以简单地将两者与brige表连接起来并执行聚合以获得任何总和。
该查询将在以下行中进行:
select c.id_combo, sum(p.price)
from combo c
join combo_product cp on c.id_combo = cp.id_combo
join product p on cp.id_product = p.id_product
group by c.id_combo;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.