繁体   English   中英

如何获得所有产品的订单

[英]how to get Orders with its all products

我对MySQL中的订单表设计有疑问。 我有ORDERS表,例如

Order_id | Customer_id | Total_Price | 
--------------------------------------

在另一边,我有桌子PRODUCT

Product_id | Product_name | available_amount 
------------------------------------------

一个订单可以包含几个不同的产品。 因此,如何更改或更新数据库设计,使我可以有效地访问所有产品的任何订单? 我应该创建单独的表名Order_details吗? 你能帮我么?

是的 您将要创建一个单独的表(如您所述),将订单及其所有产品汇总在一起,如下所示:

    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

你可以看到这个

如果您有一个包含多个产品的订单,并且产品可能处于一个或多个订单中,那么您将具有多对多关系。

您只需要使用此架构添加新表order_products(id,order_id,product_id)

  • id使行唯一
  • 您拥有的任何订单的order_id外键
  • product_id任何产品的外键,但在此将与此order_id相关

是的,订单和产品之间的关系是多对多的,因此您必须通过创建名为order_products或order_details的第三个表来打破这种关系,该表具有order_id,product_id作为外键。 另外,您应该为此表添加数量字段和sales_price字段。 同样,您不应该将total_price放在订单表中,但是可以在第三个表中按sum(quantity * sales_price)字段计算总数。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM