Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 14
  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2007
    Messaggi
    489

    script per gestione dell offerta piu bassa

    ciao a tutti!

    premetto che questa domanda non é per un sito con aste a ribasso, bensi per un gioco con un sistema ad aste a ribasso completamente gratuito tramite il quale si possono sbloccare armi e componenti vari nel gioco. i soldi sono virtuali e non si paga. giusto per precisare che non sto violando le regole del forum e non si tratta di web marketing..

    veniamo alla domanda. ho un database con due tabelle. una contiene le aste in corso (id, descrizione ecc...) e una contiene tutte le puntate fatte (idpuntata, idasta, valorepuntata, idutente ecc....)

    ora vorrei in un qualche modo ottenere uno dei tre seguenti output:

    "puntata unica e piu bassa" (se sono l unico ad aver fatto una certa puntata e non cé nessuno che ha puntato un valore unico piu basso del mio)
    "puntata unica ma non piu bassa" (se sono l unico ad aver fatto una certa puntata ma ce ne sono altre uniche piu basse)
    "puntata non unica" (se qualcunaltro ha puntato lo stesso valore)

    per tutte le puntate fatte su una specifica asta da uno specifico utente. sarebbe abbastanza facile, ma la mia paura é che se non si us aun trucchetto o si semplifica molto si ottiene una bella botta di carico per il server.
    ogni astá avrá circa 20.000 puntate. non é da molto che programmo percio un consiglio mi sarebbe molto utile.

    grazie mille

    ciao

    Igor

  2. #2
    Utente bannato
    Registrato dal
    Jul 2007
    Messaggi
    368
    Non ho capito. Vorresti sapere come scrivere la query? Che DB usi? http://database.html.it/guide/lezion...e-viste-views/

  3. #3
    Utente di HTML.it
    Registrato dal
    Dec 2007
    Messaggi
    489
    ciao!

    uso mysql.

    no, praticamente il mio problema é che devo fare uno script. ma non so quale é il modo migliore per farlo, in modo da evitare un carico eccessivo per il server. lo script deve leggere tutti i valori presenti nella tabella delle puntate (idpuntata, idasta, valorepuntata, idutente ecc....)

    supponiamo che io stia osservando l asta con id=2:

    con una query leggo tutti i valori (anche quelli degli altri) che hanno idasta=2,
    e poi faccio un controllo sui valori che ho appena letto. il controllo che faccio serve a capire che "stato" hanno le mie puntate. praticamente serve a capire se qualcunaltro ha puntato esattamente cio che ho puntato io, e se nessuno ha puntato la stessa cosa devo controllare se cé un altra offerta UNICA piu bassa della mia. ti faccio un esempio:

    nel database ci sono i seguenti valori:

    codice:
    idpuntata idasta valorepuntata idutente
    1 2 1 1
    2 2 2 1
    3 2 3 1
    4 2 4 1
    5 2 5 1
    6 2 1 2
    7 2 2 2
    8 2 4 2
    9 2 6 2
    i risultati di questi valori saranno per me che sono l utente 1:

    (valore puntata) stato

    1 Non unica
    2 non unica
    3 unica e piu bassa
    4 non unica
    5 unica ma non piu bassa

    i risultati per te invece, che sei l utente nr.2 saranno:

    1 non unica
    2 non unica
    4 non unica
    6 unica ma non piu bassa



    in poche parole a me serve fare uno script che mi dica lo stato delle puntate.. che i restituisca questo che ti ho appena fatto vedere per tutte le puntate. il problema é che un asta contiene miliaia di puntate e se non lo ottimizzo al massimo mi va in palla il server.

    per altre domande non esitare a chiedere.

    grazie

  4. #4
    Utente di HTML.it
    Registrato dal
    Dec 2007
    Messaggi
    489
    sto impazzendo..

    non riesco a farmi venire in mente modi semplici per ottenere questo risultato senza fare miliaia di query.. nessuno ha un idea geniale?

    mi basterebbe capire se é unica.. per il resto poi so arrangiarmi.

    cioé mi basterebbe avere un risultato del genere:

    se questi sono i valori presenti nel campo "valore" della tabella sql:

    1
    1
    1
    2
    2
    3
    3
    3
    4
    5
    5
    35184

    mi basterebbe uno script che mi dica:

    1 NON unico
    2 NON unico
    3 NON unico
    4 UNICO
    5 NON unico
    35184 UNICO

    ho messo 35184 come esempio perche i valori possono essere un qualisasi numero percio un loop da 1 a X non va bene.

    grazie

    ciao

    igor

  5. #5
    Utente bannato
    Registrato dal
    Jul 2007
    Messaggi
    368
    Non ho ancora capito come deve venir fuori questa cosa. La tabella che viene fuori che colonne deve avere? Hai pensato ad un stored procedure? http://database.html.it/guide/lezion...red-functions/

  6. #6
    Utente di HTML.it
    Registrato dal
    Dec 2007
    Messaggi
    489
    ciao!

    cerco di spiegarmi un po meglio. il concetto é tanto semplice ma faccio una fatica boia a spiegarlo..

    allora la tabella contiene una serie di valori numerici. a me servirebbe uno script che analizza questi valori e mi dice quale di questi valori é presente piu di una volta nel database.

    se i valori presenti nella tabella sono

    1
    1
    1
    2
    3
    3
    4
    4
    4
    5
    6

    mi deve dire che

    1 non é unico
    2 é unico
    3 non é unico
    4 non é unico
    5 é unico
    6 é unico

    ecc...

    le stored procedure non l e ho mai sentite. appena arrivo a casa gli do un occhiata e cerco di capire se pososno fare al caso mio.

    grazie

    ciao

    Igor

  7. #7
    Utente bannato
    Registrato dal
    Jul 2007
    Messaggi
    368
    Pesno che dovrai lavorare a livello di applicazione più che di DB. Consiglio più cicli annidati che per ogni numero avvii un' altro ciclo. Alla fine verranno impostate una marea di variabili (magari racchiuse in un array) e controlli non sò come.

  8. #8
    scusa ma non ti basta una query tipo questa:

    Codice PHP:
    SELECT idpuntatavalorepuntataCOUNTvalorepuntata ) AS numero_puntate 
    FROM 
    `tabella
    GROUP BY valorepuntata
    ORDER BY COUNT
    valorepuntata ) , valorepuntata 
    :master:
    « Se nella prima mezz'ora non capisci chi è il pollo, allora il pollo sei tu. » [Thomas "Amarillo Slim" Preston, campione del mondo di poker]

  9. #9
    Utente di HTML.it
    Registrato dal
    Dec 2007
    Messaggi
    489
    ciao!

    grazie, praticametne questa query oltre a dirmi il contenuto delle celle mi dice anche quante volte é presente quel valore?

    credo di non capire la query del tutto. puoi farmi un miniesempio perfavore?

    grazie e scusa il disturbo

    Igor

  10. #10
    ti restituisce

    Codice PHP:
    idpuntata    valorepuntata     numeropuntate 
    ordinate dal valore più basso in poi, ti basta scorrere il resultset fino al quando non trovi un record con numeropuntate = 1 e sei a posto...

    in alternativa puoi modificarla così:

    Codice PHP:
    SELECT idpuntatavalorepuntataCOUNTvalorepuntata ) AS numero_puntate
    FROM 
    `tabella`
    GROUP BY valorepuntata
    HAVING COUNT
    valorepuntata ) =1
    ORDER BY COUNT
    valorepuntata ) , valorepuntata 
    e il primo record sarà la puntata vincente... dovrebbe fare al caso tuo
    « Se nella prima mezz'ora non capisci chi è il pollo, allora il pollo sei tu. » [Thomas "Amarillo Slim" Preston, campione del mondo di poker]

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.