Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12

Discussione: Query Group By

  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2003
    Messaggi
    391

    Query Group By

    Ciao a tutti,
    devo fare una query su una mia tabella così composta

    post_id topic_id post_time

    Mi serve di sapere gli ultimi 5 topic_id, ovviamente avrei pensato a

    SELECT * FROM posts GROUP BY topic_id ORDER BY post_time DESC;

    ma altrettanto ovviamente non funziona perchè GROUP BY mi restituisce solo post_time del primo del gruppo che è anche il più vecchio, mentre io vorrei l'ultimo post inserito

    Ho provato anche
    SELECT *
    FROM posts
    WHERE post_time=(SELECT MAX(post_time) FROM phpbb_posts)

    e non mi funziona, forse a causa delle versione 4.0.24 del mio MySQL :master: ???

    Aiutatemi per favore

  2. #2
    devi ordinare prima la tabella per post_time desc. con la versione 4.0 e senza le query annidate puoi risolvere con una tabella temporeanea. sono due query

    codice:
    create temporary table temp
    select * from posts
    order by post_time desc;
    
    -- a seguire ora fai la seguente query:
    
    select * from temp
    group by topic_id;
    Avendo la tabella temp il campo post_time ordinato in modo DESC, la seconda query con il group by ti pesca l'ultimo record inserito per ogni topic_id

    se provi con phpmyadmin devi mettere entrambe le query nella stessa finestra di query. le tabelle temporanee vengono cancellate con la chiusura della connessione.

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

  3. #3
    Utente di HTML.it
    Registrato dal
    Oct 2003
    Messaggi
    391
    Prima di tutto grazie della disponibilità

    Ho provato, come hai intuito con MyphpAdmin, ma mi dice solo che la query è stata eseguita e non mi stampa nulla a video .
    Fa forse solo la prima parte della query?

  4. #4
    devi mettere tutto nella stessa finestra di query. Phpmyadmin e' uno script php per cui a fine pagina chiude la connessione e cancella la tabella temporanea.

    nello script php metti una query a seguire l'altra, sei sempre nella stessa pagina di script.

    codice:
    create temporary table temp
    select * from posts
    order by post_time desc;
    
    select * from temp
    group by topic_id;

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

  5. #5
    Utente di HTML.it
    Registrato dal
    Oct 2003
    Messaggi
    391
    ho fatto così, ma non mi da nulla
    poi riprovo

  6. #6
    Utente di HTML.it
    Registrato dal
    Oct 2003
    Messaggi
    391
    confermo!!! mi dice solo che la query è stata eseguita con successo?

  7. #7
    Originariamente inviato da Tuning
    confermo!!! mi dice solo che la query è stata eseguita con successo?
    prova a fare uno script php.

    mi sembra molto strano pero'. Quale versione usi di phpmyadmin?

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

  8. #8
    Utente di HTML.it
    Registrato dal
    Oct 2003
    Messaggi
    391
    phpMyAdmin 2.3.2

    lo script lo devo fare come se fossero 2 query distinte oppure alla fine della prima la tabella temp scompare?

  9. #9
    Originariamente inviato da Tuning
    phpMyAdmin 2.3.2

    lo script lo devo fare come se fossero 2 query distinte oppure alla fine della prima la tabella temp scompare?
    azzolina 2.3.2 e' preistoria.

    metti l'ultima 2.10.2

    lo script lo devi fare con due query distinte ma nella stessa pagina.

    mysql_connect
    mysql_select_db
    $query1 = "create temporary table.....
    $query2 = "select * from temp group by ..."

    mysql_query($query1);
    mysql_query($query2);

    noi stiamo parlando di quanto hai postato tu... cioe' una tabella con tre campi. Ma se invece la tabella fosse in join con altre, la logica della teb temp sarebbe la stessa ma la query da eseguire no.

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

  10. #10
    Utente di HTML.it L'avatar di knulp
    Registrato dal
    Feb 2002
    Messaggi
    563
    Funziona alla perferzione!

    Grazie.

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.