У меня сейчас проблемы с поиском решения моей проблемы, а вы, ребята, моя последняя надежда. Уже два дня я пытаюсь решить эту загадку:
элемент таблицы:
----------------------------
| id | item | customer |
----------------------------
| 1 | banana | custA |
----------------------------
| 2 | apple | custA |
----------------------------
| 3 | orange | custB |
----------------------------
| 4 | apple | custB |
----------------------------
таблица vendor_prices:
-------------------------------------------------------
| 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 способом?
Я думаю, что правильный путь для первой части:
ВЫБРАТЬ МАКС (отметка времени), поставщик, элемент, МИН. (Цена) ОТ vendor_prices ГДЕ item = "banana" GROUP BY vendor;
Но как связать это со всеми другими критериями?
РЕДАКТИРОВАТЬ: мне пришлось немного изменить первую таблицу, так как я забыл важную часть в вопросе, извините: (
Ожидаемый результат: самая последняя и лучшая цена всех поставщиков для всех товаров для конкретного клиента в первой таблице (custA или custB)