[PHP] Algoritmo per Aste al ribasso

napster3000

Nuovo Utente
13 Ott 2008
3
0
0
Ciao, sto cercando di creare un piccolo script per le aste al ribasso, ma non so' come rendere l'algoritmo il più veloce possibile.

L'argotimo deve vedere se l'offerta dell'utente ($user_bid) è l'offerta unica più bassa presente nel db.

la tabella mysql è strutturata così:
id | user_bid | item | bid
 

napster3000

Nuovo Utente
13 Ott 2008
3
0
0
si certo bid è il valore dell'offerta e si tratta di un INT (offerta in centesimi), user_bid è l'id dell'offerente
 

satifal

Utente Attivo
25 Set 2008
522
13
0
Roma
Basta effettuare una select ordinata in maniera crescente o decrescente sul campo bid e prendere dal resultset il primo o l'ultimo valore a seconda dell'ordinamento da te scelto.
Secondo me però dovresti aggiungere un campo data nel caso in cui vi siano due o più offerte con la stessa cifra. Così potrai selezionare quella effettuata per prima.
 

napster3000

Nuovo Utente
13 Ott 2008
3
0
0
Basta effettuare una select ordinata in maniera crescente o decrescente sul campo bid e prendere dal resultset il primo o l'ultimo valore a seconda dell'ordinamento da te scelto.
Secondo me però dovresti aggiungere un campo data nel caso in cui vi siano due o più offerte con la stessa cifra. Così potrai selezionare quella effettuata per prima.
Ok, puoi scriveremi la query per favore?
Ho creato il campo time in formato timestamp aggiornato con l'ora in cui viene inserita l'offerta.

User_bid è l'id dell'utente che fa l'offerta
bid è il valore in centesimi dell'offerta.

Comunque se ci sono più offerte con lo stesso valore non deve essere selezionata nessuna delle due. Ma solo l'offerta unica più bassa
 
Ultima modifica:

satifal

Utente Attivo
25 Set 2008
522
13
0
Roma
La seguente query, se non ho commesso errori, dovrebbe selezionare esclusivamente le offerte uniche ordinate in maniera crescente. Per cui il valore che cerchi (offerta unica più bassa) è contenuto nella prima riga del resultset.

Codice:
SELECT o.id, o.bid FROM nome_tabella o WHERE o.bid NOT IN (SELECT s.bid  FROM offerta s WHERE s.id <> o.id) ORDER BY o.bid ASC;