• User Attivo

    Raggruppare con un ordine particolare

    ciao ragazzi, ho una questione da cui non ne vengo a capo,sto impazzendo :dhò: :
    Poniamo che il mio database sia strutturato cosi:
    AZIENDA | ARTICOLO | DATA
    Fiat | Portiera | 01/04/2008
    Barilla | Fusilli | 02/04/2008
    Barilla | Mezzepenne | 03/04/2008
    Fiat | Volante | 04/04/2008
    Barilla | Spaghetti | 05/04/2008
    Parmalat | Latte | 06/04/2008
    Parmalat | Yogurt | 07/04/2008
    Era solo un esempio...
    Ora a me, serve estrarre SOLO l' ultimo articolo inserito per ogni azienda:
    In pratica fatta la mia query.. il risultato dovrebbe essere:
    Parmalat-Yogurt-07/04/2008
    Barilla-Spaghetti-05/04/2008
    Fiat-Volante-04/04/2008
    Ho provato numerosi sintassi... ma o mi da errori o non funzionano...o magari son semplicemente cerebroleso io!! tipo queste:
    SELECT distinct azienda,* from ordini ORDER BY data DESC
    SELECT * from ordini ORDER BY data DESC GROUP BY azienda
    Ma nessuna funziona...come posso fare??


  • User Attivo

    Ciao pazzomania,
    problema tutt'altro che banale!!!

    L'istruzione GROUP BY che sembrerebbe la più papabile, serve per raggrupare i dati per farci su dei calcoli d'insieme, tipo media e deviazione standard. Se una volta raggruppati chiedi di stampare una riga, mysql restituisce la prima se sei sei fortunato...:bho:

    Per aggirare il problema devi usare le query annidate. Prova con:

    SELECT * FROM (select max(data) as maxdata from ordini GROUP BY azienda) as ordini1 LEFT JOIN prova as ordini2 ON ordini1.maxdata = ordini2.data

    Facci sapere!!!
    :ciauz:


  • User Attivo

    @ceccus said:

    Ciao pazzomania,
    problema tutt'altro che banale!!!

    L'istruzione GROUP BY che sembrerebbe la più papabile, serve per raggrupare i dati per farci su dei calcoli d'insieme, tipo media e deviazione standard. Se una volta raggruppati chiedi di stampare una riga, mysql restituisce la prima se sei sei fortunato...:bho:

    Per aggirare il problema devi usare le query annidate. Prova con:

    SELECT * FROM (select max(data) as maxdata from ordini GROUP BY azienda) as ordini1 LEFT JOIN prova as ordini2 ON ordini1.maxdata = ordini2.data

    Facci sapere!!!
    :ciauz:

    Provato.. ma è un casino!
    La query è lentissima.. in quanto la tabella contiene circa 70000 record,,