query mysql: count e classifica [risolto] postato il 17/09/2007 11:58:08 nel forum programmazione, gdrcd e open source e modificato da jammer il 29/01/2008 11:08:58
magari mi sto scervellando da giorni e ho la soluzione davanti agli occhi, ma non riesco a capire come fare una query di questo tipo:
scenario: gdrcd-blue, tabella personaggio, in cui c'è un campo (chiamiamolo XX) che mi conteggia le azioni fatte dai pg.
io vorrei: prelevare con la query solo i primi 10 pg, ordinati per XX,
con un select, e poi ovviamente un while contenente un echo dove mi stampa appunto pg, azioni,ecc (le info che vedrò di mettere).
è una cazzata , vero? =_=
Pagine → 1
17/09/2007 14:00:51
sono suonato.. ho esposto in modo errato il problema. La risposta di Faber è (ovviamente) giusta, ma sono stato io a spiegare qualcosa del tutto errato XD
resettiamo tutto.
allora.. io voglio prendere, dalla tabella chatbackup (nome fittizio), dove io tengo salvati tutti log del mese in corso, fino alla fine del mese, la SOMMA delle azioni di ogni pg che ha scritto qualcosa in chat in quel mese.
con questa somma, prelevare quindi i primi 10 pg ordinati per questa somma. (tipo, per capirci, "i 10 pg più attivi del mese corrente, ecco).
volevo evitare di farlo in 2 query però, una inserita nell'altra, che significherebbe (su supponiamo un 100 pg attivi) un certo dispendio di lavoro del mysql.
quindi la domanda , stavolta corretta XDD: si può fare con una unica query o no? (i Join non riesco a farmeli entrare in zucca)
17/09/2007 14:31:13
Uhm, questo non lo so, indubbiamente c'e' modo di farla, ma non e' banale. Sfruttando il PHP potresti selezionare primal a lista dei nomi dei pg che hanno rientrano nella classifica, poi con un ciclo calcolare la somma di ciascuno, e salvarli in un vettore, ordinarlo, ed estrarre i primi dieci. Non penso sia molto meno efficiente che non fare una query che faccia altrettanto.
17/09/2007 22:02:25
Si può fare tutto da Mysql, con delle subquery of course XD. Se magari mi dai la struttura della tabella chatbackup potrei buttare giù qualcosa. Inoltre come consiglio potresti mettere un'elaborazione totale delle azioni già quando fai il backup.
18/09/2007 14:24:53
Ho provato a fare qualcosina:
SELECT pg, COUNT(*) as punti FROM bakchat GROUP BY pg ORDER BY punti DESC LIMIT 0,10
Senza subquery o altro (infatti mi sembrava assurdo non poter fare una cosa del genere in una sola query).
Così dovrebbe funzionare. L'unica cosa non ricordo se vanno delle virgole tra i vari group by, order by etc etc.
Edited dopo qualche test ho visto che invece di ASC ci voleva DESC XD sorry
18/09/2007 18:24:38
Correggendo i nomi dei campi.... è perfetta *_*
sei un genio *_*
grazie infinite, ho capito come funziona il group nelle query
28/01/2008 18:34:55 e modificato da jammer il 29/01/2008 10:57:33
scusate se ritiro su questo thread ma necessito ulteriore consiglio, non rieesco a capire l'errore.
una query che fa una lista delle azioni fatte nella tabella Chat, è questa:
29/01/2008 09:52:02
il Group By va messo dopo se non sbaglio, per sicurezza controlla la sintassi della SELECT su MYSQLAB
29/01/2008 11:09:20
bingo
grazie :D
Pagine → 1
Rispondi alla Discussione Aggiungi ai Preferiti Inoltra Discussione Forum Programmazione, GDRCD e Open Source Elenco Forum
Intervista allo staff di Planethos GdR il gioco di ruolo ambientato nella città di Pentos!