Ben göstermek istiyorum sonuçlarının bir tablo var:
| change | position | name | score |
|----------------------------------|
| - | 1 | Bob | 10 |
| +1 | 2 | Tom | 8 |
| -1 | 3 | Sam | 7 |
|----------------------------------|
Değişiklik sütun Yukarıdaki örnekte, son oyun bu yana Tom Sam geçildi So so -1 vb olduğu 2 3 dan +1 olup, hareketli ve 3 için 2 hareket, kişinin pozisyon hareketini yansıtır.
Can I write a single SQL statement that provides the results including the 'change' column?
Şu anda bunu yapmak için iki sorgu yazıyorum. Ben son oyun hariç puanları almak, sonra en son oyunu da dahil olmak puanları almak ve ben tablo çizmek zaman karşılaştırın.
Örnek:
Previous game results:
SELECT p.name, p.id, SUM(g.points) AS score
FROM players p INNER JOIN games g ON p.id=g.player_id
WHERE g.id<5
ORDER BY score DESC
Daha sonra bir dizisinde bu saklama:
$i=1;
while($row = mysql_fetch_assoc($results){
$prevPositions[$row['id']] = $i++;
//render row
}
All game results:
SELECT p.name, SUM(g.points) AS score
FROM players p INNER JOIN games g ON p.id=g.player_id
ORDER BY score DESC
Tablosunu işlerken Ve sonra fark çalışma dışarı:
$i=1;
while($row = mysql_fetch_assoc($results){
$change = $prevPositions[$row['id']] - $i++;
//render row
}
Bu çalışıyor - ama sadece iki yerine bir deyim kullanmak eğer kendimi daha iyi hissederdim.