0

我拥有一个在线游戏,您在其中成为橄榄球队的教练,我最近开始优化我的数据库。该网站使用 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。现在我如何计算每个联赛中不活跃球队的数量以及如何在这个数字之后对它们进行排序?

4

1 回答 1

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
于 2013-08-23T22:06:57.740 回答