我正在制作一个网络应用程序,让客户订购任何商品。为此,我制作了一个包含下表的 MySQL 数据库:
客户
订单
订单商品
产品
在 customers
表中是有关此人的所有信息,例如:
- 客户ID,用于主键和自增(id)
- 名字 (first_name)
- 姓氏(last_name)
- 电子邮件地址 (email_adress)
- 客户信息 (customer_info)
示例:
在 orders
表中是关于它的所有具体信息,例如:
- 订单ID,用于主键和自增(id)
- 哪个客户订购了它,与
customers
表 (customer_id) 中的id
字段相关联 - 订单信息(order_info)
- 订单需要去的地点(location)
- 订单创建(created)的时间
示例:
在 order-items
表中是每个客户订购的所有项目,这是由上表中的 order-id
链接的。
- ID,用于主键和自增,不用于任何关系(id)
- 订单 ID,用于哪个产品对应哪个订单。这与
orders
表 (order_id) 中的 - 产品 ID,用于他们订购的产品,它与
products
表中的 id 字段相关联。 (product_id) - 他们订购该产品的数量(数量)
id
字段相关联
示例:
在products
表中是关于产品的所有信息:
- ID,用于主键和自动递增,这与
order_items
表 (id) 中的product_id
字段相关联 - 产品名称(名称)
- 产品描述(description)
- 产品的价格(价格)
示例:
问题
Bob 订购了 product_id
2,乘以 3。这是价格为 2.50
的牛肉三明治,我们必须乘以 3,因为它已订购 3次。这是7.50
Bob 还订购了 product_id
3,乘以 5。这是价格为 3.00
的鸡肉三明治,我们必须乘以 5,因为它已被订购5次。将于 15.00
现在我需要总结一下。即 15.00 + 7.50 = 22.50
问题
如何获得与 product_id
的实际价格相关联的 product_id
?然后我可以乘以数量。
然后用相同的 order_id
总结所有这些值
对于第一个订单,我们得到产品 2(数量 3)和产品 3(数量 5),它们应该相加 2.503 + 3.005 = 22.50
最佳答案
你问,“ 如何将 product_id 与 product_id 的实际价格关联起来?然后我可以乘以数量......然后用相同的 order_id 总结所有这些值。“
像这样:
SELECT OI.Order_ID, Sum(OI.Quantity * P.Price) Total_Price
FROM `order-items` OI
INNER JOIN Products P
on OI.Products_Id = P.ID
GROUP BY OI.Order_ID
相关示例数据的预期输出:
ORDER_ID Total_price
1 22.50
这就是我询问示例输出的原因。我不确定您要返回哪些列,所以我只返回了每个订单的总和。
现在这是怎么说的 为每个订单返回一行,显示订单 ID 和 total_price,它是(订购数量 * 该订单所有行的价格)的总和。
这是通过查看订单项目表来完成的(在后面的 tic 中,因为我不确定 mySQL 是否喜欢名称中的破折号 (-)。)。根据订购商品表和价格表之间的 product_Id 连接这些表。然后按订购项目对结果进行分组,允许总和聚合订单的所有行乘以订单该行上的项目价格。
关于php - MySQL总结关系数据库中的数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25208256/