- Home
- Categorie
- Coding e Sistemistica
- Coding
- Doppioni estrazione da DB
-
Doppioni estrazione da DB
Ciao a tutti, ho due tabelle (Atleti, Graduatorie) nella tabella "Graduatorie" sono presenti tutti i tempi degli atleti. Questa tabella è collegata alla tabella "Atleti" tramite un codice identificativo di ogni atleta.
Un atleta può essere presente più volte nella tabella dei tempi sempre nella stessa gara.
Per esempio:- Pinco Pallo; 00'25.30; 100 Rana
- Pinco Pallo; 00'22.35; 100 Rana
Devo generare una graduatoria dove sono visibili i migliori tempi ed ovviamente non stampare due volte lo stesso atleta.
Ho fatto questa query:
[PHP]$sql="SELECT codFinAtleta,nomeAtleta,cognomeAtleta,YEAR(dataNascita) AS annoNascita, tempoRisultato, dataManifestazioneIn, sedeManifestazione, crono FROM manifestazionigrad INNER JOIN (ISC_atleti INNER JOIN graduatorie ON codFinAtl=codFinAtleta) ON manifestazionigrad.idManifestazione=graduatorie.codMan WHERE ISC_atleti.eliminato='n' AND graduatorie.eliminato='n' AND codGara='".$sub_gara."' AND sesso='".$_POST['sesso']."' AND manifestazionigrad.aa='".$ANNOAG."' AND graduatorie.baseVasca='".$_POST['cod_tipovasca']."'";
if($nomeCat=="Seniores")
$sql.=" AND YEAR(dataNascita)<='".$sub_anno."'";
else{
if($sub_anno!=($anni[1]."-".$anni[2]))
$sql.=" AND YEAR(dataNascita)='".$sub_anno."'";
elseif($sub_anno==($anni[1]."-".$anni[2]))
$sql.=" AND (YEAR(dataNascita)='".$anni[1]."' OR YEAR(dataNascita)='".$anni[2]."')";
}
$sql.=" GROUP BY codFinAtleta ORDER BY tempoRisultato, cognomeAtleta, nomeAtleta[/PHP]Però così facendo mi estrae una sola volta Pinco Pallo ma con il tempo peggiore....
Come posso sistemare la cosa?
Grazie
-
Ciao talkoman,
al posto di tempo tempoRisultato fai:min(tempoRisultato) AS tempoRisultato
-
Ma utilizzando il MIN mi estrae solo il miglior tempo in assoluto. Invece a me serve controllare se la stessa persona ha più tempi,inserire solo il migliore.
Es.:
nel DB ho:
Pinco pallo 1'24'57
pinco pallo 1'23'72
tizio caio 1'25'48voglio stampato:
Pinco pallo 1'23'72
Tizio caio 1'25'48
come faccio??
[URL=http://www.giorgiotave.it/forum/gt-world/101972-forum-gt-disponibile-alle-versioni-per-telefoni-cellulari.html]Postato via Mobile
-
E' quello che dovrebbe fare con min, hai provato?
-
Ok, scusa non avevo provato. Funziona!
-
Ciao Thedarkita...fino ad ora non ho avuto problemi con questa query...ma ora è diventata veramente lenta e il sistema non riesce più a reggerla e infatti va in timeout...come posso fare per velocizzare un po o sistemare il problema?
-
Inserisci degli indici nelle 2 tabelle se non lo hai già fatto.
-
Mmm cioè?
[URL=http://www.giorgiotave.it/forum/gt-world/101972-forum-gt-disponibile-alle-versioni-per-telefoni-cellulari.html]Postato via Mobile
-
Ti consiglio una lettura di questa pagina:
dev.mysql.com/doc/refman/5.0/en/mysql-indexes.html
-
Ma ce le ho le chiavi univoche...