我對PHP和CodeIgniter很陌生,所以請原諒我發佈這樣一個基本的問題!前5名的平均分數?
我在我的網站上有一個系統,用戶可以從10分中得分。這些分數存儲在一個名爲game_vote的表格中,該表格有列id,game_id,user_id和分數 - 所以它相對簡單。
我想要做的是,返回前5場總比分。所以我想我需要獲取每個game_id的平均成績,按降序排列順序的平均值,然後限制我的結果,以5
這是到目前爲止我的控制器:
function get_all_game_ratings()
{
$this->db->select('game_vote.game_id, game_vote.score, game.title');
$this->db->from('game_vote');
$this->db->join('game', 'game.id = game_vote.game_id');
$this->db->group_by('game_vote.game_id');
$this->db->where('game_vote.game_id', 2);
$query = $this->db->get();
if ($query->num_rows() > 0)
{
foreach ($query->result() as $row)
{
$this->db->select('game_vote.game_id, game_vote.score, game.title');
$this->db->select_avg('game_vote.score');
$this->db->join('game', 'game.id = game_vote.game_id');
$this->db->from('game_vote');
$this->db->where('game_vote.game_id', $row->game_id);
$query = $this->db->get();
if ($query->num_rows() > 0)
{
return $query->result();
}
}
}
}
我覺得我有點正確。
在此先感謝您的幫助。
乾杯!
[編輯]這裏的完成功能任何人都需要它在未來。 :)
function get_user_ratings($limit)
{
$this->db->select('game_vote.game_id, game_vote.score, game.title');
$this->db->select_avg('game_vote.score');
$this->db->group_by('game_vote.game_id');
$this->db->from('game_vote');
$this->db->join('game', 'game.id = game_vote.game_id');
$this->db->order_by('AVG(game_vote.score)', 'desc');
$this->db->limit($limit);
$query = $this->db->get();
if ($query->num_rows() > 0)
{
return $query->result();
}
}
的'AVG(game_vote.score)'應該是'SELECT'名單了。 – 2012-02-12 00:41:27