Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it L'avatar di knulp
    Registrato dal
    Feb 2002
    Messaggi
    563

    Select Ultimo record da ogni categoria

    Salve, ho cercato qui e altrove ma non ho trovato risposta a questo problema.

    Diciamo che ho una semplicissima tabella articoli:

    ID | TITOLO | CATEGORIA

    le categorie sono ad esempio "politica" "economia" "cultura" "sport"

    ora vorrei con una sola query, o comunque col minor numero di query possibile, stampare una tabellina con l'ultimo articolo di ogni distinta categoria.

    Ho provato a usare group by e distinct, ma senza risultato...

    avete qualche idea?

    Grazie!

  2. #2
    group by e distinct prendono il primo record che soddisfa la richiesta. quindi e' casuale il record estratto con group by/distinct.

    dovresti fare qualcosa del genere:
    codice:
    SELECT * 
    FROM 
        (select max(id) as id1 from articoli
         group by categoria) as tab1
    left join articoli as tab2 ON tab1.id1 = tab2.id
    ovviamente con un versione mysql >= 4.1

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

  3. #3
    Moderatore di Javascript L'avatar di ciro78
    Registrato dal
    Sep 2000
    residenza
    Napoli
    Messaggi
    8,514
    Originariamente inviato da piero.mac
    group by e distinct prendono il primo record che soddisfa la richiesta. quindi e' casuale il record estratto con group by/distinct.

    dovresti fare qualcosa del genere:
    codice:
    SELECT * 
    FROM 
        (select max(id) as id1 from articoli
         group by categoria) as tab1
    left join articoli as tab2 ON tab1.id1 = tab2.id
    ovviamente con un versione mysql >= 4.1


    mitico

    edit:
    giusto per curiosità e per imparare ho seguito il consiglio che hai dato ma facendo una prova eliminando la parte join

    in pratica ho fatto

    codice:
    SELECT max( id ) AS id1, cat
    FROM `prova` 
    GROUP BY cat
    ovviamente il campo cat è l'equivalente di categoria
    ora. il risultato che ottengo è quello di avere il massimo valore dell'id in base alla categoria.
    da quanto ho capito è quello che chiedeva l'utente che ha aperto il 3d.
    ora mi chiedo...perchè hai fatto il join?
    Ciro Marotta - Programmatore JAVA - PHP
    Preferisco un fallimento alle mie condizioni che un successo alle condizioni altrui.


  4. #4
    perche' non hai preso anche il titolo/gli altri campi ... ???

    ti saresti risposto da solo.... lui vuole il contenuto del record con id piu' alto, non sapere qual'e' l'id piu' alto con il primo articolo che capita nella sequenza d'ordine "fisica" nella tabella.

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

  5. #5
    Utente di HTML.it L'avatar di knulp
    Registrato dal
    Feb 2002
    Messaggi
    563
    Grazie!
    domani la provo ora so' troppo stanco!

  6. #6
    Moderatore di Javascript L'avatar di ciro78
    Registrato dal
    Sep 2000
    residenza
    Napoli
    Messaggi
    8,514
    Originariamente inviato da piero.mac
    perche' non hai preso anche il titolo/gli altri campi ... ???

    ti saresti risposto da solo.... lui vuole il contenuto del record con id piu' alto, non sapere qual'e' l'id piu' alto con il primo articolo che capita nella sequenza d'ordine "fisica" nella tabella.

    si infatti. ho provato ed è come dici
    Ciro Marotta - Programmatore JAVA - PHP
    Preferisco un fallimento alle mie condizioni che un successo alle condizioni altrui.


  7. #7
    Utente di HTML.it L'avatar di knulp
    Registrato dal
    Feb 2002
    Messaggi
    563
    OTTIMO!
    in locale funziona perfettamente, esattamente come la volevo!
    Peccato che sul server non va, anche se è installato PHP 4.3.2

    Magari sbaglio qualcosa io... farò altre prove!

    Grazie mille.

  8. #8
    Originariamente inviato da knulp
    OTTIMO!
    in locale funziona perfettamente, esattamente come la volevo!
    Peccato che sul server non va, anche se è installato PHP 4.3.2

    Magari sbaglio qualcosa io... farò altre prove!

    Grazie mille.
    non e' il php ma mysql. nella versione 4.0 non hai le query annidate.

    vedi la soluzione proposta qui.

    http://forum.html.it/forum/showthrea...readid=1141180

    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.