|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Dec 2000
Città: Trento
Messaggi: 5917
|
[sql][newbie] migliori tempi sul giro di ogni pilota
Ciao, sto cercando di imparare un pochino di python e sql, e mi ritrovo con questo problema, avendo una tabella (giri) del tipo:
Codice:
nome_pilota tempo data pilota1 10 0 pilota2 12 1 pilota4 9 2 pilota1 11 3 pilota3 7 4 pilota1 6 5 pilota2 15 6 pilota3 11 7 pilota2 7 8 pilota1 9 9 select nome_pilota, tempo, data from giri order by tempo asc come db uso mysql 5... idee?
__________________
Linux User #272700 >+++++++++[<+++++++++>-]<+.++.>++++[<---->-]<++.+++++++. HOWTO: SSH Firewall e DMZ ɐɹdosoʇʇos oʇuǝs ıɯ |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: May 2005
Città: Napoli - Fuorigrotta
Messaggi: 471
|
prova la clausola "SELECT DISTINCT nomepilota"... ma non so se funziona con mysql onestamente
__________________
Acquisti sul mercatino: grabrihc, LucaXbox360, Yarsha,micanto1,American horizo,Fnac,schumyFast,STECCO,Ezechiele25,17 Vendite sul mercatino: musodatopo,alexbands,mspr,anto.wajo |
|
|
|
|
|
#3 | |
|
Senior Member
Iscritto dal: Dec 2000
Città: Trento
Messaggi: 5917
|
Quote:
select distinct nome_pilota, tempo, data from giri order by tempo asc mi da lo stesso risultato (infatti ogni riga e' diversa dall'altra)
__________________
Linux User #272700 >+++++++++[<+++++++++>-]<+.++.>++++[<---->-]<++.+++++++. HOWTO: SSH Firewall e DMZ ɐɹdosoʇʇos oʇuǝs ıɯ |
|
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Apr 2005
Città: Resana - TV
Messaggi: 960
|
Codice:
SELECT nome_pilota, MIN(tempo) AS tempo FROM giri GROUP BY nome_pilota ORDER BY tempo asc |
|
|
|
|
|
#5 | |
|
Senior Member
Iscritto dal: Dec 2000
Città: Trento
Messaggi: 5917
|
Quote:
questa funziona... ma non fa tutto quello che mi serve: voglio sapere anche la data di quando e' stato fatto il tempo
__________________
Linux User #272700 >+++++++++[<+++++++++>-]<+.++.>++++[<---->-]<++.+++++++. HOWTO: SSH Firewall e DMZ ɐɹdosoʇʇos oʇuǝs ıɯ |
|
|
|
|
|
|
#6 |
|
Bannato
Iscritto dal: Jan 2003
Città:
Messaggi: 4423
|
|
|
|
|
|
|
#7 | |
|
Senior Member
Iscritto dal: Dec 2000
Città: Trento
Messaggi: 5917
|
Quote:
se intendi che debbo fare un: SELECT nome_pilota, MIN(tempo) AS tempo, data FROM giri GROUP BY nome_pilota ORDER BY tempo asc non funziona, in quanto ritorna si un risultato per ogni pilota, e con il tempo minimo, ma la data non e' quella del tempo minimo, ma la prima che si trova nel db... (questo sotto mysql... da quello che mi dicono con sql server sembra funzionare correttamente, cioe' come risultato da' la riga del pilota in cui il tempo e' minimo)
__________________
Linux User #272700 >+++++++++[<+++++++++>-]<+.++.>++++[<---->-]<++.+++++++. HOWTO: SSH Firewall e DMZ ɐɹdosoʇʇos oʇuǝs ıɯ |
|
|
|
|
|
|
#8 |
|
Senior Member
Iscritto dal: Feb 2004
Città: BhO
Messaggi: 3701
|
Codice:
SELECT nome_pilota, MIN(tempo) AS tempo,data FROM giri GROUP BY nome_pilota,data ORDER BY tempo,data asc
__________________
il cucchiaio non esiste...MondoIT: recensioni, appunti di vita da nerd, virtualizzazione e altre diavolerie informatiche Linux User 414915 linux counter Ho concluso con yorick, gor, djgusmy85, sulphur, Rospaccio, Leland Gaunt, paciuli
|
|
|
|
|
|
#9 | |
|
Senior Member
Iscritto dal: Dec 2000
Città: Trento
Messaggi: 5917
|
Quote:
mi da i doppioni come se non gruppassi
__________________
Linux User #272700 >+++++++++[<+++++++++>-]<+.++.>++++[<---->-]<++.+++++++. HOWTO: SSH Firewall e DMZ ɐɹdosoʇʇos oʇuǝs ıɯ |
|
|
|
|
|
|
#10 |
|
Senior Member
Iscritto dal: Feb 2004
Città: BhO
Messaggi: 3701
|
cosa ti torna esattamente?i doppioni in nome? in mysql la 'with' funziona?
__________________
il cucchiaio non esiste...MondoIT: recensioni, appunti di vita da nerd, virtualizzazione e altre diavolerie informatiche Linux User 414915 linux counter Ho concluso con yorick, gor, djgusmy85, sulphur, Rospaccio, Leland Gaunt, paciuli
|
|
|
|
|
|
#11 | |
|
Senior Member
Iscritto dal: Dec 2000
Città: Trento
Messaggi: 5917
|
Quote:
Codice:
mysql> SELECT id_pilota, MIN(tempo) AS tempo,data FROM giri where id_pista = 31 GROUP BY id_pilota,data ORDER BY tempo,data asc limit 15; +-----------+-------+------------+ | id_pilota | tempo | data | +-----------+-------+------------+ | 3 | 51.98 | 1154646327 | | 3 | 52.38 | 1147544841 | | 3 | 52.67 | 1154620376 | | 55 | 52.73 | 1152131017 | | 61 | 52.76 | 1151860446 | | 3 | 52.79 | 1149285072 | | 1598 | 52.84 | 1149841632 | | 3 | 52.9 | 1146852491 | | 36 | 52.91 | 1151959281 | | 3 | 52.94 | 1146775829 | | 55 | 52.94 | 1149841437 | | 60 | 52.96 | 1147045050 | | 61 | 52.96 | 1151527541 | | 36 | 52.98 | 1150647279 | | 61 | 53.17 | 1150830025 | +-----------+-------+------------+ 15 rows in set (0.13 sec)
__________________
Linux User #272700 >+++++++++[<+++++++++>-]<+.++.>++++[<---->-]<++.+++++++. HOWTO: SSH Firewall e DMZ ɐɹdosoʇʇos oʇuǝs ıɯ |
|
|
|
|
|
|
#12 |
|
Senior Member
Iscritto dal: Feb 2004
Città: BhO
Messaggi: 3701
|
con la with la cosa funzionerebbe così
Codice:
with temp as (SELECT nome_pilota, MIN(tempo) AS tempo FROM giri GROUP BY nome_pilota ORDER BY tempo asc) select nome_pilota,tempo,data from temp,giri where temp.nome_pilota=gire.nome_pilota and temp.tempo=giri.tempo mi scuso per eventuali errori sintattici (non ho qui un DB per fare le prove)
__________________
il cucchiaio non esiste...MondoIT: recensioni, appunti di vita da nerd, virtualizzazione e altre diavolerie informatiche Linux User 414915 linux counter Ho concluso con yorick, gor, djgusmy85, sulphur, Rospaccio, Leland Gaunt, paciuli
|
|
|
|
|
|
#13 | |
|
Senior Member
Iscritto dal: Feb 2004
Città: BhO
Messaggi: 3701
|
Quote:
Codice:
with temp(pilota,time) as (SELECT nome_pilota, MIN(tempo) AS tempo FROM giri GROUP BY nome_pilota ORDER BY tempo asc) select pilota,time,data from temp,giri where pilota=nome_pilota and time=tempo
__________________
il cucchiaio non esiste...MondoIT: recensioni, appunti di vita da nerd, virtualizzazione e altre diavolerie informatiche Linux User 414915 linux counter Ho concluso con yorick, gor, djgusmy85, sulphur, Rospaccio, Leland Gaunt, paciuli
|
|
|
|
|
|
|
#14 |
|
Senior Member
Iscritto dal: Dec 2000
Città: Trento
Messaggi: 5917
|
mysql sembra non digerire le with.....
sto provando qualcosa con group by e having... ma non riesco a cavarci fuori molto
__________________
Linux User #272700 >+++++++++[<+++++++++>-]<+.++.>++++[<---->-]<++.+++++++. HOWTO: SSH Firewall e DMZ ɐɹdosoʇʇos oʇuǝs ıɯ |
|
|
|
|
|
#15 | |
|
Senior Member
Iscritto dal: Feb 2004
Città: BhO
Messaggi: 3701
|
Quote:
io ho studiato DB2 che le distinct le implementa...senza è un tantino diverso...
__________________
il cucchiaio non esiste...MondoIT: recensioni, appunti di vita da nerd, virtualizzazione e altre diavolerie informatiche Linux User 414915 linux counter Ho concluso con yorick, gor, djgusmy85, sulphur, Rospaccio, Leland Gaunt, paciuli
|
|
|
|
|
|
|
#16 |
|
Senior Member
Iscritto dal: Feb 2004
Città: BhO
Messaggi: 3701
|
ultimo tentativo: prova così
Codice:
select pilota,time,data from giri,table temp(pilota,time) as (SELECT nome_pilota, MIN(tempo) AS tempo FROM giri GROUP BY nome_pilota ORDER BY tempo asc) where pilota=nome_pilota and time=tempo
__________________
il cucchiaio non esiste...MondoIT: recensioni, appunti di vita da nerd, virtualizzazione e altre diavolerie informatiche Linux User 414915 linux counter Ho concluso con yorick, gor, djgusmy85, sulphur, Rospaccio, Leland Gaunt, paciuli
|
|
|
|
|
|
#17 | |
|
Senior Member
Iscritto dal: Dec 2000
Città: Trento
Messaggi: 5917
|
Quote:
comunque ero arrivato anch'io ad una select nella select (piu' o meno la stessa che stai facendo tu)... ma ci sta mettendo un pelino troppo (e' un minuto che macina il mio pc!)... mi sa che mi arrangio facendo una cosa del tipo: select id_pilota, min(tempo) from giri where id_pista = XX group by id_pilota order by min(tempo) asc limit 30; e per ricavarmi la data in cui sono stati fatti questi 30 record, faccio una query per ognuno con qualcosa del tipo: select data from giri where id_pista = XX and id_pilota = id_pilota_trovato_prima and tempo like tempo_trovato_prima; e cosi dovrei risolvere... non e' bello ma dovrebbe funzionare
__________________
Linux User #272700 >+++++++++[<+++++++++>-]<+.++.>++++[<---->-]<++.+++++++. HOWTO: SSH Firewall e DMZ ɐɹdosoʇʇos oʇuǝs ıɯ |
|
|
|
|
|
|
#18 |
|
Senior Member
Iscritto dal: Feb 2004
Città: BhO
Messaggi: 3701
|
prego di niente...comunque prova ad aspettare la risposta di qualcuno che mastica meglio mysql....sicuramente saprà darti una risposta migliore
(all'università più di DB2 non abbiamo fatto..
__________________
il cucchiaio non esiste...MondoIT: recensioni, appunti di vita da nerd, virtualizzazione e altre diavolerie informatiche Linux User 414915 linux counter Ho concluso con yorick, gor, djgusmy85, sulphur, Rospaccio, Leland Gaunt, paciuli
|
|
|
|
|
|
#19 |
|
Member
Iscritto dal: Jan 2008
Città: roma
Messaggi: 296
|
ma nn ti conviene creare una vista x questa roba ?
|
|
|
|
|
|
#20 |
|
Senior Member
Iscritto dal: Dec 2000
Città: Trento
Messaggi: 5917
|
come detto io sono un povero niubbo... so a malapena cosa sia un vista
comunque cosi funziona: Codice:
SELECT g1.id_pilota, g1.tempo, g1.data from giri g1 where g1.tempo = (select min(g2.tempo) from giri g2 where g2.id_pilota = g1.id_pilota and g2.id_pista = 32) and g1.id_pista = 32 order by g1.tempo, g1.id_pilota asc limit 30 ;
__________________
Linux User #272700 >+++++++++[<+++++++++>-]<+.++.>++++[<---->-]<++.+++++++. HOWTO: SSH Firewall e DMZ ɐɹdosoʇʇos oʇuǝs ıɯ |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 18:47.



















