Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13
  1. #1
    Utente di HTML.it L'avatar di lucalicc
    Registrato dal
    Sep 2002
    Messaggi
    6,926

    Query SQL per asta ribasso

    sto provando a fare dei test per un sito di aste al ribasso
    ma ho problemi con la query sql che mi estrae l'offerta vincente.
    La tabella che contiene le offerte è strutturata in questo modo:

    id (contatore)
    id_asta (asta alla quale si riferisce l'offerta)
    offerta (valore dell'offerta, numero intero)
    data_offerta (data quando è stata effettuata l'offerta)

    dovrei estrarre il record con l'offerta, relativa all'oggetto,
    con l'offerta unica più bassa. Nel caso non ci sia una offerta
    unica ma tutte le offerte hanno almeno due partecipanti,
    devo prendere, tra quelle con il numero di offerenti più bassa,
    quella con il valore più bassa ed effettuata prima.

    Esempio pratico

    id offerta data
    1 5 01/10/2009 14.00
    2 5 02/10/2009 16.00
    3 5 04/10/2009 17.00
    4 7 03/10/2009 18.00
    5 7 04/10/2009 14.00
    4 9 03/10/2009 18.00
    5 9 04/10/2009 14.00

    l'offerta vincente sarà quella con ID 4 in quanto è quella
    che, a parità del numero minimo di offerte ricevute,
    è quella di importo inferiore e tra queste quella che
    è stata effettuata prima tra quelle della stessa cifra.
    Le offerte sono inserite con ordine cronologico,
    quindi quelle con id inferiore sono quelle effettuate prima delle altre.
    Ci sto provano con una serie di Group by ma non riesco a
    ottenere quello che mi serve.
    Sto per addentrarmi a provare delle query nidificate ma non
    so se sia la strada giusta.
    Qualsiasi suggerimento è il benvenuto.
    luca
    www.intheweb.it - Internet solutions

  2. #2
    Utente di HTML.it L'avatar di barney09
    Registrato dal
    Dec 2000
    Messaggi
    1,296
    Dovrei estrarre il record con l'offerta, relativa all'oggetto, con l'offerta unica più bassa. Nel caso non ci sia una offerta unica ma tutte le offerte hanno almeno due partecipanti,
    devo prendere, tra quelle con il numero di offerenti più bassa, quella con il valore più bassa ed effettuata prima.
    :master:





    Se provi a rilleggerti capisci che è difficile capire cosa intendi. Cerca di spiegare piu' chiaramente il concetto.

  3. #3
    Utente di HTML.it L'avatar di barney09
    Registrato dal
    Dec 2000
    Messaggi
    1,296

    Re: Query SQL per asta ribasso

    Originariamente inviato da lucalicc
    l'offerta vincente sarà quella con ID 4 in quanto è quella
    che, a parità del numero minimo di offerte ricevute,
    è quella di importo inferiore e tra queste quella che
    è stata effettuata prima tra quelle della stessa cifra.
    idem come sopra... non si capisce di cosa hai bisogno.

    Almeno, io non riesco a capire...

  4. #4
    Utente di HTML.it L'avatar di lucalicc
    Registrato dal
    Sep 2002
    Messaggi
    6,926
    è il concetto della tipica asta al ribasso:
    vince quello che ha fatto l'offerta più bassa ed unica:
    su quattro partecipanti, se due offrono 1 euro, uno 2 euro e uno 3 euro,
    vince quello che offre due euro in quanto è l'offerta unica più bassa.

    Il problema è se non esiste una offerta unica, ma sono tutte con almeno
    due offerenti o più..stesso esempio:
    quatto partecipanti, due offrono 1 euro e due offrono 2 euro,
    vince quello che ha offerto un euro, in quanto, a parità di numero
    di offerte per la stessa cifra, è quella con l'importo più basso.
    Inoltre, tra questi due che hanno offerto 1 euro, deve vincere
    quello che ha fatto l'offerta prima dell'altro.

    Mi rendo conto che è un concetto un pò macchinoso
    (e da qui le difficoltà per la creazione della query sql...)
    ma una volta capito il concetto è molto più facile interpretarlo
    di quanto sembra.
    luca
    www.intheweb.it - Internet solutions

  5. #5
    Utente di HTML.it L'avatar di barney09
    Registrato dal
    Dec 2000
    Messaggi
    1,296
    ora mi è chiaro il concetto, non sapevo che funzionasse così. Pensavo che vinceva l'asta semplicemente l'offerta piu' bassa.



    Visto la complessità forse ti conviene fare piu' query intervallate con controlli e cicli IF.

    Poi magari un puritano dell'SQL te la riesce a scrivere, a a sto punto se puoi, scrivi qualche IF e gestiscila con piu' query.

  6. #6
    Utente di HTML.it L'avatar di lucalicc
    Registrato dal
    Sep 2002
    Messaggi
    6,926
    per fare come dici dovrei effettuare almeno tre query consecutive,
    con i vari controlli if...
    Considerato che questo tipo di query è largamente utilizzata
    all'interno del sito, speravo in qualcosa di più compatto ed efficiente.
    luca
    www.intheweb.it - Internet solutions

  7. #7
    Utente di HTML.it L'avatar di barney09
    Registrato dal
    Dec 2000
    Messaggi
    1,296
    Per il discorso compatto puoi fare una funzione che ti restituisca il vincitore.

    Per il discorso efficenza, bisogna vedere il numero di record, pero' non penso ci siano differenze percepibili, se non hai veramente moltissimi record.

  8. #8
    Utente di HTML.it L'avatar di lucalicc
    Registrato dal
    Sep 2002
    Messaggi
    6,926
    ci potrebbero essere molti record e molti accessi,
    per questo tenderei a limitare il numero di query necessarie.
    Se il progetto per il quale sto lavorando avrà successo,
    è probabile la migrazione su piattaforma sql server,
    ma per ora si limita ad asp/access.
    luca
    www.intheweb.it - Internet solutions

  9. #9
    Utente di HTML.it L'avatar di barney09
    Registrato dal
    Dec 2000
    Messaggi
    1,296
    non ci sono molte differenze prestazionali.

    Fai pure dei test. Se i campi sono pochi e ben indicizzabili, come nel tuo caso, su Access ottieni già buoni risultati anche con 1.000.000 di record.

    Su mysql anche con oltre 20.000.000 di record.

    Poi dopo che le aste sono scadute da N giorni puoi cancellare i dati, o archiviarli...

    Insomma non c'è che l'imbarazzo della scelta soprattutto considerando che la differenza tra una query complessa e una serie di query è quasi impercettibile.

  10. #10
    Utente di HTML.it L'avatar di lucalicc
    Registrato dal
    Sep 2002
    Messaggi
    6,926
    nessun suggerimento per una query per questa esigenza?
    luca
    www.intheweb.it - Internet solutions

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.