На моем сайте (предназначенном для игроков PS3) пользователи могут выбрать 3 игры, которые они сейчас играют. Я потом выясню, какие игры являются самыми популярными, и список лучших 5 на основе активных пользователей.Вычислить «самые популярные» идентификаторы в нескольких столбцах базы данных
У меня есть 3 колонки в моей таблице пользователей, которые называются game1_id, game2_id и game3_id. Эти значения относятся к столбцу 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();
}
}
Я предполагаю, что мне нужно как-то подсчитывать, сколько раз игры идентификатор можно найти в любом из трех столбцов (game1_id, game2_id, game3_id), но Я не совсем уверен, как это сделать?
[EDIT] И ЗДЕСЬ ЗАВЕРШЕННАЯ ФУНКЦИЯ.
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();
}
}
Голосовать за принятый ответ, если он работает для вас. –