- Home
- Categorie
- Coding e Sistemistica
- Coding
- [mysql] group by ordinato secondo le mie esigenze
- 
							
							
							
							
							[mysql] group by ordinato secondo le mie esigenzeSalve a tutti, ho questo problema: Ho i seguenti dati: 
 id - autore - rispostaId - messaggio - data
 1_____2_______1_________ciao_____20
 2_____3_______1_________bene_____23
 3_____4_______3_________pippo____26
 4_____5_______3_________pluto_____28Vorrei raggruppare tramite rispostaIdma vorrei che me li ordinasse in basa alladataDESC (Ho già provato anche con ASC)
 La query che ho usato è questa:
 SELECT * FROMmessaggiWHEREautore> '0' GROUP BYrispostaIdORDER BYdataDESCMa il risultato è: 
 id - autore - rispostaId - messaggio - data
 1_____2_______1_________ciao_____20
 3_____4_______3_________pippo____26**invece io vorrei: ** 
 id - autore - rispostaId - messaggio - data
 2_____3_______1_________bene_____23
 4_____5_______3_________pluto_____28Grazie per eventuali risposte! Buonagiornata 
 
- 
							
							
							
							
							Io non sto capendo l'ordinamento che tu vorresti. 
 Rispetto a quello che viene e quello che vorresti mi sembra la stessa cosa.ID dal piu piccolo al piu grande. 
 Autore idem.
 Risposta ID idem.
 Messaggio ordine alfabetico.
 Data, dalla piu piccola alla piu grande.Su tutti e due i tuoi esempi. 
 
- 
							
							
							
							
							Ciao misotropici, 
 credo che l'ordinamento fatto in questo modo (cioè dopo aver raggruppato) non sia la risposta a ciò che cerchi.
 Infatti, tu vorresti ordinare per data, ma quando raggruppi per rispostaId, tutti quelli che hanno lo stesso valore in quel campo vengono raggruppati in un solo record.
 A quel punto, però, in data quale valore dovrebbe esserci tra quelli che ha unito? E lo stesso problema si pone anche per le colonne messaggio, autore e id...Per poterti aiutare dovresti almeno spiegarci qual'è il tuo obiettivo. Ad occhio mi sembra tu voglia estrarre l'ultimo messaggio, ma non ne sono sicuro. 
 Una via per fare quello che cerchi rapidamente è concatenare due query, mandando in input alla group by una tabella già ordinata per data con DESC.Ciao, 
 Luca Bartoli
 
- 
							
							
							
							
							salve alla fine ho risolto grazie all'aiuto di un amico, il mio intento era quello di raggruppare per rispostaIdma mostrando il messaggio più nuovo.
 Sto semplicemendo facendo un sistema di repliche a messaggi privati sul mio sito, quindi se uno replica a un messaggio la deve mostrare per prima.SELECT * FROM ( 
 SELECT * FROMmessaggi
 WHERErispostaIdIN (
 SELECT id FROMmessaggi
 WHEREautore= '1') ORDER BY `data` DESC) AS m GROUP BY rispostaId
 ORDER BYdataDESC