• User Newbie

    Query in un unica tabella

    Ciao a tutti,
    Dovrei fare una query apparentemente banale relativa ad un unica tabella.
    Vi faccio un esempio nella speranza di illustrarvi il problema.

    Supponiamo di avere una tabella composta tra tre colonne: tipo_auto, viaggio, data

    • In tipo_auto sono contenute i nomi di alcune auto
    • in data la data dell' viaggio effettuato
    • in viaggio, la destinazione del viaggio effettuato.Supponiamo di avere 3 auto e che ogni una, in data diversa abbia fatto 3 viaggi.
      La tabella potrebbe essere qualcosa di simile:
    
    tipo_auto |   viaggio |    data 
    --------------------------------------
    BMW    |   Roma      |  15-01-2007  
    AUDI   |   Milano    |  11-01-2007  
    FIAT   |   Bergamo   |  25-01-2005  
    BMW    |   Napoli    |  05-01-2007  
    BMW    |   Torino    |  02-12-2006  
    FIAT   |   Palermo   |  10-10-2006  
    FIAT   |   Bologna   |  15-01-2007  
    AUDI   |   Pisa      |  07-06-2006  
    AUDI   |   Bolzano   |  06-01-2007  
    
    

    l' obiettivo e avere una query che mi restituisca un record per ogni auto.
    Il record deve rappresentare l' ULTIMO viaggio effettuato da tale auto.

    In pratica dovrei riuscire ad estrarre:
    FIAT | Bologna | 15-01-2007
    BMW | Roma | 15-01-2007
    AUDI | Milano | 11-01-2007

    Come fare ?

    Ciao e buona serata a tutti...
    Il database : MySQL o in alternativa SQL Server 2000


  • User Attivo

    SELECT * FROM nome_tabella GROUP BY tipo_auto ORDER BY data DESC

    dovrebbe andare bene...


  • User Attivo

    no scusami ho detto una ca**ata...


  • User Newbie

    no problem, in apparenza dovrebbe essere una sciocchezza ma....
    Se consideri che nella tabella esiste anche un ulteriore campo: "ora" e la query dovrebbe teneere in considerazione anche quello per l' estrazione dei dati , l'affare si complica ancora un poco di piu'.
    Comunque grazie per il tentativo.
    CIAO


  • User Attivo

    SELECT tipo_auto, viaggio, max(
    DATA )
    FROM nometabella
    GROUP BY tipo_auto
    ORDER BY DATA ASC
    LIMIT 0 , 30


  • User Attivo

    no luic77, nemmeno questa va bene perchè non mantiene l'associazione tra il viaggio e la data.

    Nel suo caso, ad esempio, non selezionerebbe:
    FIAT | Bologna | 15-01-2007
    ma
    FIAT | Bergamo | 15-01-2007


  • User Newbie

    Questa mi sembra buona ma....la tabella su cui lavoro e grossa ed una query simile e' lunghissima...!

    select * from Tabella T
    Inner join
    (select Tipo_auto , max([Data]) as MaxData from Tabella group by Tipo_auto) as Q1
    on T.Tipo_auto=Q1.Tipo_auto AND t.[Data]=Q1.MAxData

    Qualcuno vede delle alternative ?
    Grazie