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

    GROUP BY in ordine decrescente

    Salve a tutti, sto facendo una query in cui vorrei raggruppare i miei risultati, selezionando quello con l'id più alto e non quello più basso che è di dafault con il gruoup by.

    codice:
    SELECT b.post, b.id, c.name, c.surname
    FROM forum_post AS a 
    INNER JOIN forum_reply AS b ON b.post = a.id 
    INNER JOIN utenti AS c ON c.id = a.owner 
    WHERE a.category = 1
    GROUP BY b.post
    ORDER BY b.id DESC
    Questa è la mia query. In sostanza vorrei fare un GRUOP BY b.post scegliendo fra tutti i risultati con lo stesso b.post, quello con il campo b.id maggiore. Qualcuno sa aiutarmi?

  2. #2
    Utente bannato
    Registrato dal
    Dec 2012
    Messaggi
    679
    La domanda mi pare malposta: group by NON ha un ordinamento predefinito o garantito, nè ascendente nè discentente.
    Se, durante l'utilizzo, i risultati risultano ordinati, è perchè esiste un indice e l'RDMBS lo utilizza, o perchè sono usate tecniche varie di merge-sort etc.

    Ma la versione sintetica è semplice: solo order garantisce un ordinamento.

  3. #3
    Ok, chiedo scusa se la domanda è malposta. Il succo è che vorrei selezionare fra tutti i b.post l'ultimo inserito. Chi sa aiutarmi?

  4. #4
    Utente bannato
    Registrato dal
    Dec 2012
    Messaggi
    679
    Hai due possibilità.
    La prima è quella di usare una sottoquery dipendente che determini il MAX(qualcosa) e porlo come condizione. Questo è un approccio universale.

    La seconda (relativa a mysql) è fare un ORDER DESC sul campo che vuoi, con un banalissimo LIMIT 1

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 © 2026 vBulletin Solutions, Inc. All rights reserved.