MySQL和PHP - 计算DB中产品的价格

时间:2015-01-21 22:52:16

标签: php html mysql database inventory

我是SQL的新手,并且一直在为旁边业务开发库存跟踪系统。我使用PHP,MySQL和HTML开发了它。我开发了几个功能,可以让我做一些整洁的事情。我一直坚持要弄清楚如何计算一个单元的价格,一旦组装完成,它就由多个组件组成。

目前,我有2张桌子,希望能帮助我拿出最终的价格数字。

SQL关系

表1:Material_Inventory

PRODUCT_ID (PK) | Quantity | Last Entry

此表可帮助我跟踪库存中每个组件的数量,并跟踪产品上次添加的时间

表2:Orders

Order_ID |  Product_ID | Item_quantity | Unit_price

此表可帮助我跟踪每个订单的每个单独组件的单价。我同样“按订单”,因为组件的价格可能因订单而异。

问题

尝试计算最终构建单元的价格(组件a +组件b +组件c)。我很难搞清楚如何计算最终价格。这是我遇到的问题:

  • 如何解释组件的价格变化?          - 例如,我即将组装2个单位。但第一单元中的组件A与第二单元中的组件A具有不同的单价。

非常欢迎任何建议或任何形式的反馈。

非常感谢您的时间!

欢呼声

2 个答案:

答案 0 :(得分:0)

你的意思是产品价格是先进先出法(先进先出)还是平均?这是您如何计算平均方法的产品价格:

select x.product_id, (x.total_price / x.total_quantity) as average_price
(
     Select a.product_id as product_id, 
          sum(b.item_quantity) as total_quantity, 
          sum(b.unit_price*item_quantity) as total_price
     from material_inventory as a inner join orders as b 
     on a.product_id = b.product.id
     group by a.product_id
) as x

答案 1 :(得分:0)

我会像这样布置我的桌子......

products

id | name | type | current_price

orders

id | user_id | submitted

order_items

id | order_id | product_id | locked_in_price | quantity

通过这种方式设置,您可以将locked_in_price设置为产品current_price,当它首次添加到购物车时。然后,为了获得你的物品和总数,你会这样做......

SELECT *, SUM(locked_in_price * quantity) AS total FROM order_items WHERE order_id = 1;