Mysql 如何获得所有产品的订单

Mysql 如何获得所有产品的订单,mysql,database-design,Mysql,Database Design,我对MySQL中的订单表设计有疑问。 我有像桌子一样的订单 Order_id | Customer_id | Total_Price | -------------------------------------- 在另一边,我有桌上产品 Product_id | Product_name | available_amount ------------------------------------------ 订单可以包含多个不同的产品。 那么,我如何才能改变或更新我的数据库设计,使我

我对MySQL中的订单表设计有疑问。 我有像桌子一样的订单

Order_id | Customer_id | Total_Price | 
--------------------------------------
在另一边,我有桌上产品

Product_id | Product_name | available_amount 
------------------------------------------
订单可以包含多个不同的产品。 那么,我如何才能改变或更新我的数据库设计,使我能够有效地访问任何订单及其所有产品?
我是否应该创建单独的表名和订单详细信息?您能帮我一下吗?

是的,订单和产品之间的关系是多对多的,因此您必须通过执行第三个名为“订单产品”或“订单详细信息”的表来打破这种关系,该表将订单id、产品id作为外键。 此外,还应为此表添加数量字段和销售价格字段。
此外,您不应该将总价放在orders表中,但可以在第三个表中按总和(数量*销售价格)字段计算总价。

是的。您需要创建一个单独的表,如您所述,将订单及其所有产品集合在一起,如下所示:

    Order_Product_id | Order_id | Product_id
    ----------------------------------------
    1                | 1        | 1
    2                | 1        | 3
    3                | 1        | 5
    4                | 2        | 3
    5                | 3        | 1
    6                | 3        | 2
然后您可以按如下顺序获得所有产品:

Select op.Order_id, p.Product_id, p.Product_name 
FROM Product p 
JOIN Order_Product op ON op.Product_id = p.Product_id
WHERE op.Order_id = 1
你可以看到

你有一个订单,其中有多个产品,产品可以在一个或多个订单,然后你有多对多的关系

您只需使用此模式添加新表订单产品(id、订单id、产品id)

  • id使行唯一
  • 订单\u id任何订单的外键
  • 产品标识任何产品的外键,但在这里它将与此订单标识