在两个表之间选择值,仅按数据所有者排序


Select values between 2 tables order by only data owner

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

例如:

产品表

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

和客户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)时,它将显示在相同的结果中。

非常感谢。

首先:您的订单表中不应该有供应商ID。(如果你需要关联订单ID和供应商ID,你可以通过查询来完成。)

第二:每个ProductID都应该在Orders表中有自己的记录:

| OrderIDs | ProductIDs | CustomerIDs |
---------------------------------------------------
|    1     |   04       |      1      |
|    1     |   05       |      1      |

第三:我假设你总是有一个与每个订单相关的客户,而且你不太可能有两个不同的客户来处理这样的订单:

| OrderIDs | ProductIDs | CustomerIDs |
---------------------------------------------------
|    1     |   04       |      1      |
|    1     |   05       |      5      |

因此,Customer ID不属于列出订单详细信息的表。相反,您应该有一个OrderDetails表:

| OrderID | ProductID | 
-----------------------
|    1    |   04      |
|    1    |   05      |
|    2    |   09      |

以及订单表:

| OrderID | CustomerID |
------------------------
|    1    |      1     |
|    2    |      5     |
|    3    |      5     |

如果您在重新配置表格后有任何问题,请告诉我,我可以帮助您。