私のサイト(PS3のゲーマー向け)では、ユーザーは現在プレイしている3つのゲームを選択できます。私はどのゲームが最も人気があるかを考え、アクティブなユーザーに基づいてトップ5を挙げます。複数のデータベース列で「最も一般的な」IDを計算する
ユーザーテーブルにgame1_id、game2_id、game3_idという3つの列があります。これらの値は、gameという別のテーブルのidカラムと関係しています。このテーブルには、タイトルなどのゲームに関するすべての情報が入っています。
これらの合計を集計し、上位5つの最もアクティブなゲームを返す方法を教えてください。ここで
は、これまでの私のモデル関数である:
function get_5_popular_games()
{
$this->db->select('user.game1_id, user.game2_id, user.game3_id');
$this->db->from('user');
$query = $this->db->get();
if ($query->num_rows() > 0)
{
return $query->result();
}
}
私は何とかゲームIDが3つの列(game1_id、game2_id、game3_id)のいずれかで発見された回数まで集計する必要があると仮定したが、私はそれについてどうやって行くのか完全にはわからないのですか?
[編集]ここに完成した機能があります。
function get_popular_games($limit)
{
$this->db->select('count(*) as popularity, game.title');
$this->db->from('user_game');
$this->db->join('game', 'game.id = user_game.game_id');
$this->db->group_by('game_id');
$this->db->order_by('popularity', 'desc');
$this->db->limit($limit);
$query = $this->db->get();
if ($query->num_rows() > 0)
{
return $query->result();
}
}
それはあなたのために働く場合、受け入れられた答えを投票してください。 –