Visualizzazione dei risultati da 1 a 3 su 3
  1. #1

    [MySQL] Problema su query sql

    Vi espongo il mio problema:
    ho una tabella voti composta da 4 campi:
    nome TEXT
    presenza TEXT
    migliore INT
    peggiore INT

    questa tabella viene alimentata da dei voti per il migliore o il peggiore della giornata (si tratta di una classifica di un torneo di calcetto)

    io avevo impostato questa query:
    codice:
    SELECT nome FROM voti WHERE migliore =(select max(migliore) from voti)
    che mi restituisce il o i nome/i con più voti nel campo migliore.

    a questo punto però ho un problema in caso di parità, o meglio:
    se nome1 ha migliore=4 e peggiore=1
    e nome2 ha migliore=4 e peggiore=0
    il migliore deve essere quello con più voti nel campo migliore e meno voti nel campo peggiore.

    allora ho pensato di modificare la query in questo modo:
    codice:
    SELECT nome FROM voti WHERE migliore =(select max(migliore) from voti) AND peggiore =(select min(peggiore) from voti)
    però con questa query se migliore e peggiore sono uguali non mi viene restituito alcun risultato

    qualcuno sa dove sbaglio?

    grazie

  2. #2
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    Puoi fare un esempio pratico di dati che creano problemi?
    A me sembra che la query faccia il suo dovere.

  3. #3
    il problema è che usando quella query in caso di parità (nome1 con voti sia di migliore che di peggiore uguali a nome2) la query da risultato nullo.
    Sono riuscito a risolvere grazie ad un utente con:
    codice:
    SELECT nome from voti where migliore=(SELECT migliore from voti order by migliore desc, peggiore asc limit 0,1) and peggiore=(SELECT peggiore from voti order by migliore desc, peggiore asc limit 0,1)
    ma adesso ho il problema inverso.. quindi trovare il peggiore...
    il peggiore dovrà essere colui che ha più voti nella colonna peggiore e meno voti in quella migliore, cioè tra:
    nome1 peggiore=4 migliore=1
    nome2 peggiore=4 migliore=2
    nome3 peggiore=4 migliore=1

    sia nome1 che nome3 devo risultare come peggiori

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.