我正在开发一个拍卖网络应用程序。现在我有一个带有投标的表格,我想从这个表格中选择每次拍卖的最后 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) 中使用的字符串,并且只在连接中使用它。这样我就可以加入拍卖ID,我有最新的结果。
现在,当有新的出价时,这些是步骤:
- 在出价中插入出价 获取最后插入的 ID
- 获取此拍卖产品的 bids_history 字符串
- 爆炸字符串
- 插入新值
- 检查是否有超过 3 个
- 内爆数组,然后再次插入字符串
在我看来,这一切都不是一个很好的解决方案。我真的不知道该走哪条路。请记住,这是一个有很多出价的网站,每个拍卖品最多可以出价 15.000 个。也许因为这个数量是 GROUPING 和 ORDERING 不是一个好方法。如果我错了,请纠正我。
拍卖结束后,我会清理出价表,删除所有出价,并将它们存储在单独的表中。
有人可以帮我解决这个问题!
如果你去过,谢谢阅读..
编辑
我使用的表是:
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