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

    [mysql] problema di ORDER con mysql

    Ciao a tutti,
    dovrei selezionare dei dati da un db mysql, con un ordinamento particolare.
    si tratta di un db utenti, in cui vengono registrati vari dati.
    Tra questi anche la media e il numero dei voti ricevuti da ogni utente.
    Io vorrei selezionare i dati del db in modo che siano ordinati in base alla media voto più alta solo se il numero di voti è maggiore o uguale a 10 altrimenti l'ordine viene dato dal time dell'iscrizione (dal più recente al più vecchio).

    La query ora è:

    "SELECT * FROM utenti WHERE blah blah blah AND blah blah blah ORDER BY media DESC, time DESC"

    dove media è la media voto dell'utente e time è il timestamp di quando si è iscritto.
    In questa query vorrei porre la clausola che l'ordinamento è in base alla media SOLO SE IL NUMERO DI VOTI (il field si chiama 'voti') E' MAGGIORE DI 10 altrimenti subentra il time.

    Come faccio?
    Grazie a tutti

  2. #2
    Utente di HTML.it L'avatar di luca200
    Registrato dal
    Apr 2002
    Messaggi
    4,120
    SELECT *, if(voti>10,0,1) as abbastanza, if(voti>10,media,null) as media1 FROM utenti WHERE blah blah blah AND blah blah blah ORDER BY abbastanza, media1 DESC, time DESC

    In questo modo ti escono prima quelli con almeno 10 voti ordinati per media, poi gli altri ordinati per time. Se li vuoi a rovescio aggiungi un DESC nella order by oppure scambia lo 0 e l'1 nella prima if

  3. #3
    Sei gentilissimo, ma le mie skills in mysql non sono così avanzate, se non chiedo troppo, mi spiegheresti esattamente cosa significa?
    Grazie molte

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 © 2024 vBulletin Solutions, Inc. All rights reserved.