Ben bir açık artırma web uygulaması üzerinde çalışıyorum. Şimdi ben teklif bir tablo var ve bu tablodan ben açık arttırmada son 10 tekliflerini seçmek istiyorum.
Şimdi ben gibi bir şey kullanarak son teklif alabilirsiniz biliyorum:
SELECT bids.id FROM bids WHERE * GROUP BY bids.id ORDER BY bids.created
Şimdi ben duymak isterim varsa sonuçlarının GROUP BY için bir miktar ayarı, aslında hiç de kolay bir çözüm bulduk, yapmak kolay bir şey olmadığını okudum.
Ama bu sorunu çözmek için bazı çözümler ile geldi, ama ben de bunu yapıyorum emin değilim.
Alternative
Ilk şey bu bids_history çağırarak, yeni bir tablo yaratıyor. Bu tabloda i geçen öğelerin bir dizesini depolamak.
Örnek:
bids_history
================================================================
auction_id bid_id bidders times
1 20,25,40 user1,user2,user1 time1,time2,time3
I have to store the names and the times too, because I have found no easy way of taking the string used in bid_id(20,25,40), and just using this in a join. This way i can just just join on auction id, and i have the latest result.
Şimdi yeni bir teklif var yerleştirildiğinde, bu adımlar şunlardır:
- Teklifleri lastinserteid almak içine teklifi eklemek
- get the bids_history string for this
auction product
- dize patlayabilir
- yeni değerler eklemek
- 3'ten fazla olup olmadığını kontrol
- dizi implode ve tekrar dize eklemek
This all seems to me not a very well solution. I really don't know which way to go. Please keep in mind this is a website with a lot of bidding's, they can g up to 15.000 bidding's per auction item. Maybe because of this amount is GROUPING and ORDERING not a good way to go. Please correct me if I am wrong.
I tüm teklifleri kaldırarak, tekliflerin tabloyu temizlemek, ve ayrı bir tabloda saklayabilirsiniz yapmak üzerine ihale sonra.
Birisi bana bu sorunu çözmek yardım edebilir misiniz!
Ve eğer sen-si, okuma için teşekkürler ..
DÜZENLEME
I kullanma tablolar şunlardır:
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)
I sorgu sonucu ne istiyorsun:
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
Yani bu sayı, 3 ya da 10 ile seçmek için, açık arttırma başına son teklifleri olduğunu