簡體   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