如何获得所有产品的订单

Ali*_*lov -1 mysql database-design

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

Order_id | Customer_id | Total_Price | 
--------------------------------------
Run Code Online (Sandbox Code Playgroud)

在另一边我有桌子 PRODUCT

Product_id | Product_name | available_amount 
------------------------------------------
Run Code Online (Sandbox Code Playgroud)

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

Jim*_*mmy 5

是的。您将需要创建一个单独的表,就像您提到的那样,将订单及其所有产品放在一起,如下所示:

    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
Run Code Online (Sandbox Code Playgroud)

然后你可以得到所有按顺序排列的产品,如下所示:

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
Run Code Online (Sandbox Code Playgroud)