选择2个表之间的值仅按数据所有者排序

时间:2016-01-09 05:11:05

标签: php mysql

我希望按发布该产品的供应商显示产品详细信息订单。

前:

产品表

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

赞赏。

1 个答案:

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

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