[英]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)
是的,订单和产品之间的关系是多对多的,因此您必须通过创建名为order_products或order_details的第三个表来打破这种关系,该表具有order_id,product_id作为外键。 另外,您应该为此表添加数量字段和sales_price字段。 同样,您不应该将total_price放在订单表中,但是可以在第三个表中按sum(quantity * sales_price)字段计算总数。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.