我想按发布该产品的供应商显示产品详细订单。
例如:
产品表
| ProductIDs | VendorIDs | ProductsName |
----------------------------------------
| 04 | 1 | Shirt |
| 05 | 2 | Pants |
来自供应商A的客户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选择的订单列表中,我希望仅由供应商A或供应商B显示
ORDER
和PRODUCT
详细信息时,应显示如下:供应商收入订单页面。
| OrderIDs | ProductIDs | CustomerIDs | ProductsName |
------------------------------------------------------
| 1 | 04 | 1 | Shirt |
------------------------------------------------------
供应商B收入订单页面。
| OrderIDs | ProductIDs | CustomerIDs | ProductsName |
------------------------------------------------------
| 1 | 05 | 1 | Pants |
------------------------------------------------------
和客户一个订购清单页面。
| 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)
时,它将以相同的结果显示。感激。
最佳答案
首先:您的订单表中不应包含供应商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 |
重新配置表格后,如果您有任何疑问,请告诉我们,我们会为您提供帮助。
关于php - 在2个表之间选择值(仅由数据所有者排序),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34689935/