Я работаю над веб-приложением аукциона. Теперь у меня есть таблица с предложениями, и из этой таблицы я хочу выбрать последние 10 заявок на аукцион.
Теперь я знаю, что могу получить последнюю ставку, используя что-то вроде:
SELECT bids.id FROM bids WHERE * GROUP BY bids.id ORDER BY bids.created
Теперь я прочитал, что установка суммы для результатов GROUP BY не легкая вещь, на самом деле я не нашел легкого решения, если бы я хотел услышать это.
Но я придумала несколько решений для решения этой проблемы, но я не уверена, хорошо ли я это делаю.
Альтернативный
Первым делом создается новая таблица с именем bids_history. В этой таблице я храню строку последних элементов.
пример:
bids_history
================================================================
auction_id bid_id bidders times
1 20,25,40 user1,user2,user1 time1,time2,time3
Мне также нужно хранить имена и время, потому что я не нашел простого способа взять строку, использованную в bid_id (20,25,40), и просто использовать ее в соединении.
Таким образом, я могу просто присоединиться к аукциону и получить последний результат.
Теперь, когда ставится новая ставка, выполняются следующие шаги:
- вставить ставку в ставки, получить lastinserteid
- получить строку bids_history для этого
аукционный продукт
- взорвать строку
- вставить новые значения
- проверить, если их больше 3
- взорвать массив и снова вставить строку
Все это кажется мне не очень хорошим решением.
Я действительно не знаю, куда идти. Пожалуйста, имейте в виду, что это веб-сайт с большим количеством предложений, они могут получить до 15.000 предложений на аукцион. Может быть, из-за этой суммы группировка и заказ не очень хороший путь. Пожалуйста, поправьте меня, если я ошибаюсь.
После окончания аукциона я очищаю таблицу заявок, удаляя все заявки и сохраняю их в отдельной таблице.
Может кто-нибудь помочь мне решить эту проблему!
И если вы были, спасибо за чтение ..
EDIT
Таблицы, которые я использую:
bids
======================
id (prim_key)
aid (auction id)
uid (user id)
cbid (current bid)
created (time created)
======================
auction_products
====================
id (prim_key)
pid (product id)
closetime (time the auction closses)
Что я хочу получить в результате запроса:
result
===============================================
auction_products.id bids.uid bids.created
2 6 time1
2 8 time2
2 10 time3
5 3 time1
5 4 time2
5 9 time3
7 3 time1
7 2 time2
7 1 time3
Так что на аукцион выставляются последние ставки, на выбор по номеру 3 или 10