- Home
- Categorie
- Coding e Sistemistica
- PHP
- Raggruppare con un ordine particolare
-
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??
-
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.dataFacci sapere!!!
-
@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.dataFacci sapere!!!
Provato.. ma è un casino!
La query è lentissima.. in quanto la tabella contiene circa 70000 record,,