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

    [MySql]group by e max()

    Salve,
    il problema di oggi è questo:
    di una tabella vorrei visualizzare il massimo tempo, cioè l'ultimo inserimento, di un determinato id.
    Quando faccio:
    codice:
    select Lat, Lon, max(Tempo) from Coordinate group by Cod_Chip="100"
    Mi viene restituita una tabella che contiene SEMPRE, qualsiasi sia il valore del chip, due record dove,
    uno è il primo valore massimo trovato, l'altro è il valore che serve a me.

    Come faccio ad ottenere solo quello che voglio?

    Grazie

  2. #2
    Scusate, credo di aver trovato, come al solito l'ho fatta più complicata di quello che era:
    codice:
    select max(Tempo) from Coordinate where Cod_Chip="100";
    Sembra funzioni!

  3. #3
    Uffa il problema rimane
    Ovviamente non estraggo le coordinate, che è ciò che mi serve!!!!!!!!!!!

  4. #4
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    codice:
    select tab2.*
    from
    (select max(tempo) as tempo from coordinate
    where cod_chip = 100
    group by cod_chip) as tab1
    left join coordinate as tab2 on tab1.tempo = tab2.tempo

  5. #5
    Ok, ma cosa mi dovrebbe restituire?

  6. #6
    Non sarebbe più semplice una sana:
    codice:
    select Lat, Lon, max(Tempo) from Coordinate where Cod_Chip="100" group by Cod_Chip;
    Che ne pensi?

  7. #7
    Utente di HTML.it
    Registrato dal
    Feb 2005
    Messaggi
    1,150
    Originariamente inviato da nonsopiuchedire
    Non sarebbe più semplice una sana:
    codice:
    select Lat, Lon, max(Tempo) from Coordinate where Cod_Chip="100" group by Cod_Chip;
    Che ne pensi?
    Innanzitutto nella group by metti un campo che non estrai nella select e vicevera.
    O lasci solo la max(tempo) oppure metti (ma non estrarresti quello che ti serve, immagino) tutti i campi che estrai nell'elenco della group by.

    Insomma... i campi che estrai devo essere tutti nella group by

    Inoltre, che vuol dire Cod_Chip="100"? :master:

  8. #8
    Cod_Chip="100".......................
    Vuol dire che mi servono i dati riguardanti quel chip.

    Comunque funziona, ora sto imparando come fare una query insert in java.

    Grazie

  9. #9
    Utente di HTML.it
    Registrato dal
    Feb 2005
    Messaggi
    1,150
    Originariamente inviato da nonsopiuchedire
    Cod_Chip="100".......................
    Vuol dire che mi servono i dati riguardanti quel chip.
    Se lo estrai nella condizione di where, non ha senso metterlo come campo group by


    Comunque funziona, ora sto imparando come fare una query insert in java.

    Grazie

  10. #10
    Diciamo che voglio i massimi tempi di ogni chip:
    codice:
    "SELECT Cod_Chip, Lat, Lon, MAX(Tempo) FROM Coordinate GROUP BY Cod_Chip;"
    e che,dopo aggiorno questi dati con delle insert:
    codice:
    "INSERT INTO Coordinate(Cod_Chip,Lat,Lon) values(?,?,?)"
    Il problema è che, quando vado a rifare la Select mi restituisce i massimi tempi, cioè l'ultima insert, ma con Lat e Lon vecchi.
    Credo di non aver capito come funziona questo giochino :master:

    Tu puoi aiutarmi?

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.