我希望按发布该产品的供应商显示产品详细信息订单。
前:
产品表
| ProductIDs | VendorIDs | ProductsName |
----------------------------------------
| 04 | 1 | Shirt |
| 05 | 2 | Pants |
客户来自供应商A的订单productid 04
和来自供应商B订单表的productid 05
应为:
订单表 (客户A ID = 1,供应商A ID = 1,供应商B ID = 2)
| OrderIDs | VenderIDs | ProductIDs | CustomerIDs |
---------------------------------------------------
| 1 | 1, 2 | 04, 05 | 1 |
当供应商选择订单列表时,我希望仅按供应商A或供应商B显示ORDER
和PRODUCT
详细信息,如下所示:
供应商收入订单页面。
| OrderIDs | ProductIDs | CustomerIDs | ProductsName |
------------------------------------------------------
| 1 | 04 | 1 | Shirt |
------------------------------------------------------
供应商B收入订单页面。
| OrderIDs | ProductIDs | CustomerIDs | ProductsName |
------------------------------------------------------
| 1 | 05 | 1 | Pants |
------------------------------------------------------
客户A有序列表页面。
| OrderIDs | ProductIDs | ProductsName |
----------------------------------------
| 1 | 04, 05 | Shirt, Pants |
----------------------------------------
这是我用于选定订单的代码。
SELECT * FROM Order WHERE FIND_IN_SET(1, VendorIDs)
此代码仅显示ProductsName
字段中的第一个值。
| OrderIDs | ProductIDs | CustomerIDs | ProductsName |
------------------------------------------------------
| 1 | 04 | 1 | Shirt |
------------------------------------------------------
当我将(1, VendorIDs)
更改为(2, VendorIDs)
时,它将显示在相同的结果中。
赞赏。
答案 0 :(得分:0)
首先:您的订单表中不应包含供应商ID。 (如果您需要关联订单ID和供应商ID,您将能够通过查询来实现。)
第二:每个ProductID都应该在Orders表中拥有它自己的记录:
| OrderIDs | ProductIDs | CustomerIDs |
---------------------------------------------------
| 1 | 04 | 1 |
| 1 | 05 | 1 |
第三:我假设您将始终拥有与每个订单相关的单个客户,并且您不可能为这样的订单拥有两个不同的客户:
| OrderIDs | ProductIDs | CustomerIDs |
---------------------------------------------------
| 1 | 04 | 1 |
| 1 | 05 | 5 |
因此,客户ID不属于列出订单详细信息的表中。相反,您应该有一个 OrderDetails 表:
| OrderID | ProductID |
-----------------------
| 1 | 04 |
| 1 | 05 |
| 2 | 09 |
和订单表:
| OrderID | CustomerID |
------------------------
| 1 | 1 |
| 2 | 5 |
| 3 | 5 |
如果您在重新配置表格后有任何疑问,请告诉我,我可以帮助您。