我拥有一个在线游戏,你成为橄榄球队的教练,我最近开始优化我的数据库。该网站使用CodeIgniter框架。
我有以下表格(表格中有更多字段,但我只发布了那些现在很重要的字段):
LEAGUES: id
STANDINGS: league_id, team_id, points
TEAMS: id, active
以前,我在LEAGUES表中有一个名为teams的字段。这代表了该联盟中活跃球队的数量(最近登录的用户)。 所以,我正在做以下选择以获得一个0到4个活跃球队的随机联赛(首先是球队较少的联赛)。
SELECT id FROM LEAGUES WHERE teams>0 AND teams<4 ORDER BY teams ASC, RAND( ) LIMIT 1
有没有办法我现在可以做同样的命令而无需添加团队字段? 它有效吗?或者最好将团队字段保留在数据库中?
后期编辑
这是我到目前为止所做的事情:
function test()
{
$this->db->select('league_id, team_id');
$this->db->join('teams', 'teams.id = standings.team_id');
$this->db->where('active', 0);
$query = $this->db->get('standings');
return $query->result_array();
}
该函数返回所有非活动团队及其league_id。 现在我如何计算每个联赛中不活跃球队的数量以及如何在这个数字之后对它们进行排序?
答案 0 :(得分:2)
试试这个:
select league_id
from standings s
join teams t on t.id = s.team_id and t.active
group by 1
having count(*) < 5