Php 一个SQL更新查询问题

Php 一个SQL更新查询问题,php,mysql,Php,Mysql,我有两张这样的桌子: Products(productID,categoryID,price) MarginOfProfit(categoryID,rate) 任何时候我们想要改变某一类别产品的价格,我们都会查看它们的变化率,并将其应用于原始价格 例如: ProductID | CategoryID | Price 1 1 105 2 1 105 CategoryID | Rate

我有两张这样的桌子:

Products(productID,categoryID,price) 
MarginOfProfit(categoryID,rate)
任何时候我们想要改变某一类别产品的价格,我们都会查看它们的变化率,并将其应用于原始价格

例如:

ProductID | CategoryID | Price
        1            1     105
        2            1     105


CategoryID | Rate
        1    0.05
在这个例子中,我们的原价是100。因此,当我的客户说:“更改所有价格%10”时,我必须首先计算原始价格,再加上%10,我们的价格将是110

我试图编写一个SQL更新查询,但未能完成。你有什么建议?有没有办法在MySQL中自动完成。我的意思是定义一些程序或其他东西


感谢所有愿意提供帮助的人,最好在产品表中有一个原始价格栏,而不是加价后的价格栏

ProductID | CategoryID | OriginalPrice
        1            1             100
        2            1             100
然后,您可以在选择后进行标记(或创建视图):

或者,如果无法更改表结构(这很不幸),可以执行如下更新:

UPDATE Products
  JOIN MarginOfProfit ON Products.CategoryID = MarginOfProfit.CategoryID
   SET Price = Price / (1 + Rate) * (1 + YOUR_NEW_RATE)
 WHERE Products.CategoryID = 1;

…其中,
您的新费率
将是您正在设置的新费率。但是,在更改
MarginOfProfit
表中的
rate
值之前,必须执行此操作。如果需要,您可以创建一个接受NewRate参数并同时执行
UPDATE
s.

的表,最好在Products表中有一个OriginalPrice列,而不是在加价后的price列

ProductID | CategoryID | OriginalPrice
        1            1             100
        2            1             100
然后,您可以在选择后进行标记(或创建视图):

或者,如果无法更改表结构(这很不幸),可以执行如下更新:

UPDATE Products
  JOIN MarginOfProfit ON Products.CategoryID = MarginOfProfit.CategoryID
   SET Price = Price / (1 + Rate) * (1 + YOUR_NEW_RATE)
 WHERE Products.CategoryID = 1;
…其中,
您的新费率
将是您正在设置的新费率。但是,在更改
MarginOfProfit
表中的
rate
值之前,必须执行此操作。如果需要,您可以创建一个接受NewRate参数并同时执行
UPDATE
s.

Hmm

UPDATE Price SET Price=Price/(1+OldRate)*(1+NewRate) WHERE CategoryID = 1
最简单的SQL语句,假设您拥有所有值

这可能是通过使用“CategoryRates”上的触发器来实现的?表,但它需要两个速率字段(OldRate、NewRate)

UPDATE Price SET Price=Price/(1+OldRate)*(1+NewRate) WHERE CategoryID = 1
最简单的SQL语句,假设您拥有所有值

这可能是通过使用“CategoryRates”上的触发器来实现的?表,但它需要两个速率字段(OldRate、NewRate)

尝试以下操作:

UPDATE FROM Products AS p 
JOIN MarginOfProfit as m ON p.CategoryID = m.CategoryID  
SET p.Price = p.Price + p.Price*m.Rate     
试试这个:

UPDATE FROM Products AS p 
JOIN MarginOfProfit as m ON p.CategoryID = m.CategoryID  
SET p.Price = p.Price + p.Price*m.Rate     

您想通过php或mysql制作吗?您想通过php或mysql制作吗?这不符合要求,因为您没有使用原始价格更新:只需将当前值除以旧费率还原原始值这不符合要求,因为您没有使用原始价格更新:只需将当前值除以旧汇率