[英]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.