Я работаю над веб-приложением аукциона. Теперь у меня есть таблица со ставками, и из этой таблицы я хочу выбрать последние 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), и просто использовать ее в соединении. Таким образом, я могу просто присоединиться к идентификатору аукциона, и у меня будет последний результат.
Теперь, когда будет размещена новая ставка, выполните следующие действия:
- вставить ставку в ставки получить последнийinserteid
- get the bids_history string for this
auction product
- explode the string
- вставить новые значения
- проверить, если их больше 3
- взорвать массив и снова вставить строку
Все это кажется мне не очень удачным решением. Я действительно не знаю, куда идти. Пожалуйста, имейте в виду, что это веб-сайт с большим количеством торгов, они могут доходить до 15 000 ставок на аукционный лот. Может быть, из-за этой суммы ГРУППИРОВКА и ЗАКАЗ не лучший способ. Пожалуйста, поправьте меня, если я ошибаюсь.
После окончания аукциона я очищаю таблицу ставок, удаляю все ставки и сохраняю их в отдельной таблице.
Может кто-нибудь, пожалуйста, помогите мне решить эту проблему!
И если вы были, спасибо за чтение ..
РЕДАКТИРОВАТЬ
Таблицы, которые я использую:
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.