我目前无法为我的问题找到解决方案,你们是我最后的希望。两天以来,我一直在尝试解决这个难题:
表项:
----------------------------
| id | item | customer |
----------------------------
| 1 | banana | custA |
----------------------------
| 2 | apple | custA |
----------------------------
| 3 | orange | custB |
----------------------------
| 4 | apple | custB |
----------------------------
表供应商价格:
-------------------------------------------------------
| id | item | price | vendor | timestamp |
-------------------------------------------------------
| 1 | banana | 0.23 | VendorA | 564645564 |
-------------------------------------------------------
| 2 | orange | 0.21 | VendorA | 564645564 |
-------------------------------------------------------
| 3 | apple | 0.19 | VendorB | 564645564 |
-------------------------------------------------------
| 4 | banana | 0.22 | VendorB | 564645565 |
-------------------------------------------------------
| 5 | banana | 0.21 | VendorB | 564645567 |
-------------------------------------------------------
有几点需要注意:
- 不是每个供应商都有每件商品
- 一些供应商可能会比其他供应商更频繁地更新其价格,从而导致它们之间的时间戳差距更大
例如,我想知道目前哪个供应商以最优惠的价格出售香蕉?
我想我首先需要从每个供应商那里获得每件商品的最新价格,然后按价格对它们进行排序,对吗?但是如何以兼容 MySQL 的方式做到这一点呢?
我认为第一部分的正确方法是:
SELECT MAX(timestamp), vendor, item, MIN(price) FROM vendor_prices WHERE item="banana" GROUP BY vendor;
但是如何将其与所有其他标准联系起来呢?
编辑:我不得不稍微更改第一个表,因为我忘记了问题中的一个重要部分,抱歉:(
预期输出:第一个表(custA 或 custB)中特定客户的所有项目的所有供应商的最新、最优价格