我想按发布该产品的供应商显示产品详细订单。

例如:

产品表

| 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显示ORDERPRODUCT详细信息时,应显示如下:

供应商收入订单页面。

| 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/

10-11 20:49