Итак, у меня есть 1 стол MySQL с продажами и цена и время его продажи. У меня есть второй стол со средней ценой за каждый предмет на рынке, который фиксируется каждые 5 минут. Эти вещи могут изменить цену с минуты на минуту.соединяя 2 таблицы, чтобы найти самые близкие временные метки
Мне нужно получить рыночную цену из таблицы 2 за каждый проданный товар, который наиболее близок к времени продажи как до, так и после продажи.
Я пытался разделить его на получение цены до и после продажи в виде 2 отдельных запросов. То, что я до сих пор, ниже. Проблема с ним, хотя это только заказывает market.time после того, как строки были установлены. Мне нужно его заказывать на market.time, прежде чем оператор GROUP BY выберет верхнюю строку на sales.id (надеюсь, это имело смысл). В основном это возвращает самую раннюю цену, указанную для предмета, который был продан, а затем вся таблица упорядочена к тому времени.
SELECT sales.id, sales.price, sales.time, sales.item_id, market.time, market.price,
FROM sales_table sales
INNER JOIN market_table market ON market.item_id = sales.item_id
WHERE market.time < sales.time
GROUP BY sales.id
ORDER BY market.time DESC;
продаж таблица
| id | price| time | item_id |
--------------------------------------------------------
| 1 | 0.5 | 2006-10-05 11:55:44 | 5 |
| 2 | 1.1 | 2007-10-07 12:34:17 | 5 |
| 3 | 0.4 | 2008-10-09 08:19:36 | 9 |
| 4 | 5.8 | 2010-10-13 04:28:14 | 1 |
настольный рынок
| id | price| time | item_id |
--------------------------------------------------------
| 1 | 0.5 | 2006-10-05 11:50:00 | 1 |
| 2 | 1.1 | 2006-10-05 11:55:00 | 1 |
| 3 | 0.4 | 2008-10-09 02:20:00 | 2 |
| 4 | 5.8 | 2010-10-09 04:25:00 | 2 |
желаемого результата
| s_id | s_price| sales_time | item_id| market_time |m_price
----------------------------------------------------------------------------
| 1 | 0.5 | 2006-10-05 11:55:44 | 5 | 2006-10-05 11:55:00| 0.5
| 2 | 1.1 | 2007-10-07 12:34:17 | 5 | 2007-10-07 12:30:00| 1.2
| 3 | 0.4 | 2008-10-09 08:19:36 | 9 | 2008-10-09 08:15:00| 0.45
| 4 | 5.8 | 2010-10-13 04:28:14 | 1 | 2010-10-13 04:25:00| 6.0
, что я в настоящее время получаю от моего запроса выше
| s_id | s_price| sales_time | item_id| market_time |m_price
----------------------------------------------------------------------------
| 1 | 0.5 | 2006-10-05 11:55:44 | 5 | 2001-01-01 00:00:00| 1.0
| 2 | 1.1 | 2007-10-07 12:34:17 | 5 | 2002-06-01 09:15:00| 0.8
| 3 | 0.4 | 2008-10-09 08:19:36 | 9 | 2002-08-14 15:30:00| 0.2
| 4 | 5.8 | 2010-10-13 04:28:14 | 1 | 2003-10-01 12:00:00| 5.2
См http://meta.stackoverflow.com/questions/333952/why-should-i-provide-an-mcve-for-what-seems-to-me-to-be-a-very -simple-sql-query – Strawberry
@Strawberry Ouch ... Я рад, что это не мой вопрос ;-) –
@TimBiegeleisen Я все еще напряженно тружусь над тем, что, если я скажу это достаточно часто, сообщение может в конечном итоге пройти кому-то. – Strawberry