Originalmente inviato da
debug
... id_casa; id_trasferta; reti_casa; reti_trasferta; giornata. ...
L'idea è giusta, ma davvero complicata da gestire: ecco come puoi fare in PHP la stampa di una classifica stile Serie A del Televideo RAI (pag. 203):
Codice PHP:
<?php
// dagli ID risali ai nomi delle squadre
$query1 = "SELECT id_squadra, nome_squadra FROM SQUADRE ORDER BY id_squadra";
// conta le partite vinte in casa dalle squadre...
$query2 = "SELECT id_casa, COUNT(reti_casa) AS vinte FROM GIORNATE WHERE reti_casa > reti_trasferta GROUP BY id_casa ORDER BY id_casa";
// ... quelle pareggiate in casa...
$query3 = "SELECT id_casa, COUNT(reti_casa) AS pari FROM GIORNATE WHERE reti_casa = reti_trasferta GROUP BY id_casa ORDER BY id_casa";
// ... e quelle perse
$query4 = "SELECT id_casa, COUNT(reti_casa) AS perse FROM GIORNATE WHERE reti_casa < reti_trasferta GROUP BY id_casa ORDER BY id_casa";
// conta le partite vinte in trasferta dalle squadre...
$query5 = "SELECT id_trasferta, COUNT(reti_trasferta) AS vinte FROM GIORNATE WHERE reti_casa < reti_trasferta GROUP BY id_trasferta ORDER BY id_trasferta";
// ... quelle pareggiate in trasferta...
$query6 = "SELECT id_trasferta, COUNT(reti_trasferta) AS pari FROM GIORNATE WHERE reti_casa = reti_trasferta GROUP BY id_trasferta ORDER BY id_trasferta";
// ... e quelle perse
$query7 = "SELECT id_trasferta, COUNT(reti_trasferta) AS perse FROM GIORNATE WHERE reti_casa > reti_trasferta GROUP BY id_trasferta ORDER BY id_trasferta";
// infine, calcola quante reti ha segnato e subito ciascuna squadra in casa...
$query8 = "SELECT id_casa, SUM(reti_casa) AS segnate, SUM(reti_trasferta) AS subite FROM GIORNATE GROUP BY id_casa ORDER BY id_casa";
// ... e in trasferta
$query9 = "SELECT id_trasferta, SUM(reti_trasferta) AS segnate, SUM(reti_casa) AS subite FROM GIORNATE GROUP BY id_trasferta ORDER BY id_trasferta";
// esegui le 9 query ($db è l'oggetto di connessione dal database ottenuto da mysql_connect() )
$result1 = mysql_query($query1, $db);
$result2 = mysql_query($query2, $db);
$result3 = mysql_query($query3, $db);
$result4 = mysql_query($query4, $db);
$result5 = mysql_query($query5, $db);
$result6 = mysql_query($query6, $db);
$result7 = mysql_query($query7, $db);
$result8 = mysql_query($query8, $db);
$result9 = mysql_query($query9, $db);
// prepara la classifica
$tab[][];
$index = 0;
while ($line1 = mysql_fetch_array ($result1))
{
// in cella 0 il nome della squadra
$tab[$index][0] = $line1['nome_squadra'];
// in cella 1 il punteggio
$line2 = mysql_fetch_array ($result2);
$line3 = mysql_fetch_array ($result3);
$line5 = mysql_fetch_array ($result5);
$line6 = mysql_fetch_array ($result6);
$tab[$index][1] = 3 * ($line2['vinte'] + $line5['vinte']) + $line3['pari'] + $line6['pari'];
// in cella 2 il numero di partite vinte
$tab[$index][2] = $line2['vinte'] + $line5['vinte'];
// in cella 3 il numero di partite pari
$tab[$index][3] = $line3['pari'] + $line6['pari'];
// in cella 4 il numero di partite perse
$line4 = mysql_fetch_array ($result4);
$line7 = mysql_fetch_array ($result7);
$tab[$index][4] = $line4['perse'] + $line7['perse'];
// in cella 5 il numero di reti segnate
$line8 = mysql_fetch_array ($result8);
$line9 = mysql_fetch_array ($result9);
$tab[$index][5] = $line8['segnate'] + $line9['segnate'];
// in cella 6 il numero di reti subite
$tab[$index][6] = $line8['subite'] + $line9['subite'];
// prossimo giro...
$index++;
}
// adesso riordina la classifica per punteggio (qui si può fare di meglio...)
for ($i = 0; $i < $count ($tab); $i++)
{
$max = $i;
for ($j = $i + 1; $j < count ($tab); $j++)
if ($tab[$j][1] > $tab[$max][1])
$max = $j;
if ($i != $max)
{
$temp = $tab[$max];
$tab[$max] = $tab[$i];
$tab[$i] = $temp;
}
}
// finalmente, stampa la classifica!
echo ('<TABLE><TR><TH>Squadra</TH><TH>Punti</TH><TH>Vinte</TH><TH>Pari</TH><TH>Perse</TH><TH>Reti segnate</TH><TH>Reti subite</TH></TR>');
for ($i = 0; $i < count ($tab); $i++)
{
echo ('<TR>');
for ($j = 0; $j < count ($tab[$i]); $j++)
echo ('<TD>' . $tab[$i][$j] . '</TD>');
echo ('</TR>');
}
echo ('</TABLE>');
?>
Io l'ho buttato lì questo script (quindi non ti garantisco che funzioni), come puoi vedere non hai NESSUNA DIPENDENZA tra dati, ma ti servono ben 9 query per stampare la classifica completa... forse qualche ridondanza ti aiuterebbe a ridurre il numero di query...
Stammi bene...