Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1

    Estrarre record che hanno il campo più grande

    codice:
    SELECT *, MAX(numero) AS ultimo
    FROM giroal_vocisomm
    GROUP BY id
    HAVING numero=ultimo
    In teoria dovrebbe restituirmi tutti i record che hanno il campo numero corrispondente a ultimo (che sarebbe il più alto valore tra tutti i record).
    Invece mi restituisce tutti i record indistinamente.

    Why?


    Ciaoooooo!!!!!
    Originariamente inviato da kalamaro
    una volta avevate linkato la pagina di un software per eliminare i ciao! di debug dai post, ho provato nel mio negozio di fiducia a scaffale non lo hanno, vi ricordate il nome?

  2. #2
    perche' raggruppi per id che essendo univoco il campo numero rappresenta il tutto, cioe' il max, il min, avg, ecc.... essendoci solo lui.

    raggruppa per qualcosa d'altro

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  3. #3
    Ciao,
    suppongo che la tabella contiene id, numero
    ultimo da dove arriva?
    E' giusto "HAVING numero=ultimo" ?

  4. #4
    Ho raggruppato per un campo che è comune per tutti i record che dovrei estrarre (quindi non esclude, in teoria, nessun record), e mi restituisce nessun record!
    Tutti gli altri campi sono diversi gli uni dagli altri.

    EDIT x copymaster: non hanno id, e ultimo e' l'alias di MAX(numero)


    Ciaoooooo!!!!!!
    Originariamente inviato da kalamaro
    una volta avevate linkato la pagina di un software per eliminare i ciao! di debug dai post, ho provato nel mio negozio di fiducia a scaffale non lo hanno, vi ricordate il nome?

  5. #5
    Utente di HTML.it L'avatar di luca200
    Registrato dal
    Apr 2002
    Messaggi
    4,120
    Devi usare una subquery

    SELECT * FROM giroal_vocisomm WHERE numero = (SELECT MAX(numero) FROM giroal_vocisomm))

    Così dovrebbe funzionare

    Ovviamente devi avere almeno MySql 4.1. Altrimenti devi farlo in due query

  6. #6
    Appunto, la versione di mysql non supporta le subquery e volevo usare una sola query.
    Mi pare molto molto strano che non ci sia un metodo per estrarre tutti i record che hanno in comune un campo che risulta essere il piu' alto tra tutti i record presenti!!


    Ciaooo!!!
    Originariamente inviato da kalamaro
    una volta avevate linkato la pagina di un software per eliminare i ciao! di debug dai post, ho provato nel mio negozio di fiducia a scaffale non lo hanno, vi ricordate il nome?

  7. #7
    OT Scusatemi, la clausola Having di MySql permette di fare filtri utilizzando un alias?

  8. #8
    Originariamente inviato da CopyMaster
    OT Scusatemi, la clausola Having di MySql permette di fare filtri utilizzando un alias?
    Si.


    Ciaoooo!!
    Originariamente inviato da kalamaro
    una volta avevate linkato la pagina di un software per eliminare i ciao! di debug dai post, ho provato nel mio negozio di fiducia a scaffale non lo hanno, vi ricordate il nome?

  9. #9
    Alla fine ho risolto via php.
    Ordinando per 'ultimo' decrescente, ciclando il risultato, al primo record faccio valorizzare una var che imposta l'ultimo numero, facendo successivamente (sempre all'interno del ciclo) un controllo per verificare se i record scorsi abbiano quel numero, in caso contrario terminare il ciclo.

    (però sto rosicando che non ci sia riuscito tramite sql...)


    Ciaoooo!!!!!!!
    Originariamente inviato da kalamaro
    una volta avevate linkato la pagina di un software per eliminare i ciao! di debug dai post, ho provato nel mio negozio di fiducia a scaffale non lo hanno, vi ricordate il nome?

  10. #10
    Originariamente inviato da debug
    Alla fine ho risolto via php.
    Ordinando per 'ultimo' decrescente, ciclando il risultato, al primo record faccio valorizzare una var che imposta l'ultimo numero, facendo successivamente (sempre all'interno del ciclo) un controllo per verificare se i record scorsi abbiano quel numero, in caso contrario terminare il ciclo.

    (però sto rosicando che non ci sia riuscito tramite sql...)


    Ciaoooo!!!!!!!
    mi pare una complicazione rispetto alle due query come anche proposto da Luca200.

    Una query seleziona il max() ed eventualmente conti i record, l'altra estrai solo i dati interessati. Se nella tabella hai migliaia di record li devi raccogliere sempre tutti nel result set con la tua soluzione.

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

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.