Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,923

    [MySql] Ancora problemi con group by e max

    Ciao a tutti. Lo so che l'argomento è stato trattato diverse volte però io ho un "piccolo" problema.

    Tabella maggiori
    codice:
    id_prog id  datas
    1	1   2006-01-01
    3	1   2005-10-10
    5	1   2005-12-12
    2	2   2006-02-03
    4	2   2006-01-01
    6	2   2006-10-10
    Questa la query che eseguo

    SELECT *
    FROM
    (select max(datas) as datas from maggiori
    group by id) as tab1
    left join maggiori as tab2 ON tab1.datas = tab2.datas

    La data maggiore per id 1 è 2006-01-01
    La data maggiore per id 2 è 2006-10-10

    Al che mi aspetterei di avere come risultato della query i record con id _prog 1 e 6.
    Invece ottengo 3 record, i due precedenti più quello con id_prog 4 appartenente al gruppo (id) 2 perchè la data 2006-01-01, pur non essendo la maggiore del gruppo 2, coincide con la maggiore dell'altro gruppo.
    Ovviamente se modifico la data a 2006-01-02 ad esempio, allora il risultato della query è giusto. Come risolvo?


    Questo è il dump nel caso qualcuno avesse la pazienza di provarlo.
    CREATE TABLE `maggiori` (
    `id_prog` tinyint(4) NOT NULL auto_increment,
    `id` tinyint(4) default NULL,
    `datas` date default NULL,
    PRIMARY KEY (`id_prog`)
    ) ENGINE=InnoDB DEFAULT CHARSET=latin1;

    /*Data for the table `maggiori` */

    insert into `maggiori` (`id_prog`,`id`,`datas`)
    values
    (1,1,'2006-01-01'),
    (2,2,'2006-02-03'),
    (3,1,'2005-10-10'),
    (4,2,'2006-01-01'),
    (5,1,'2005-12-12'),
    (6,2,'2006-10-10');

    Grazie.

  2. #2
    se la montagna non va da Maometto, Maometto va alla montagna....

    codice:
    SELECT * 
    FROM 
    (select concat(id,max(datas)) as datas from maggiori
    group by id) as tab1
    left join maggiori as tab2 
    ON tab1.datas = concat(tab2.id,tab2.datas)

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

  3. #3
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,923
    Originariamente inviato da piero.mac
    se la montagna non va da Maometto, Maometto va alla montagna....

    codice:
    SELECT * 
    FROM 
    (select concat(id,max(datas)) as datas from maggiori
    group by id) as tab1
    left join maggiori as tab2 
    ON tab1.datas = concat(tab2.id,tab2.datas)
    Non ho più parole per descriverti. Sei il mio eroe Piero.
    Grazie. Posso dormire più sereno.

  4. #4
    io devo are una cosa molto simile, perchè a me non funziona?

    io ho
    id_file id_progetto data
    e mi serve l'ultimo file inserito di ogni progetto ordinati per data

    ho scritto:
    $b= mysql_query ("select *, MAX(data) AS data from aree_progetti_contenuti WHERE titolo not like '%Bilancio%' and ris='0' and id_progetto!='14' group by id_progetto order by data desc limit 7 ");
    e mi estrae la data più recente per progetto, il nome del progetto, ma il file non è abbinato
    milka

  5. #5
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,923
    codice:
    select *
    from
    (select concat(id_progetto,max(data)) as data from aree_progetti_contenuti
    where titolo not like '%bilancio%' and ris=0 and id_progetto != 14
    group by id_progetto ) as tab1
    left join aree_progetti_contenuti as tab2 ON tab1.data = concat(tab2.id_progetto,tab2.data)
    order by tab2.data desc limit 7
    Nel caso non possa usare le subquery non funzionerà e vuole scritta diversamente.

  6. #6
    infatti dà errore
    milka

  7. #7
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,923
    Originariamente inviato da milka
    infatti dà errore
    Prova così allora

    codice:
    create temporary table temp
    select * from aree_progetti_contenuti
    where titolo not like '%bilancio%' and ris=0 and id_progetto != 14
    order by data desc
    
    select * from temp
    group by id_progetto
    order by data desc limit 7

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.