gpt4 book ai didi

mysql - 使用 CodeIgniter 中的事件记录类在一个查询中计数、分组、排序?

转载 作者:行者123 更新时间:2023-11-29 06:57:06 25 4
gpt4 key购买 nike

我正在使用 CodeIgniter,我的数据库中有 2 个表。

第一个叫做大陆,看起来像这样:

    id     | continent_name
-----------------------
1 | Africa
2 | Antarctica
3 | Asia
4 | Australia
5 | Europe
6 | North America
7 | South America

第二次调用状态,看起来像这样:

        id | continent_id  | country_name
-----------------------------------
1 | 5 | Denmark
2 | 1 | Angola
3 | 7 | Peru
4 | 5 | Germany
5 | 7 | Venezuela
6 | 1 | Egypt
7 | 5 | Spain
8 | 5 | France
9 | 7 | Argentina
10 | 6 | Canada

现在我想要一个按 continent_id 分组的有序列表,并从大多数记录(在我的例子中是欧洲)到最少(亚洲)的结果如下所示:

Europe (4)
South America (3)
Africa (2)
North America (1)
Asia (0)

记录的数量并不重要,我将在内部使用另一个 foreach 循环。但我需要以某种方式在一个查询中实现计数、分组和排序事件记录功能:

到目前为止,我的模型中有这个:

function get_top_continents() {

$q = $this->db->from('states')
->join('continents', 'states.continent_id = continents.id')
->group_by('continent_id')
->get();
return $q;


}

但我还需要根据组中的项目数量对结果进行排序。

如何做这样的order by条件?

最佳答案

$q = $this->db->select('continents.id as continent_id,max(continents.continent_name) as   continent_name, COUNT(states.id) as states_count',FALSE)
->from('continents')
->join('states', 'continents.id=states.continent_id','left')
->group_by('continents.id')
->order_by('states_count', 'desc');
->get();

关于mysql - 使用 CodeIgniter 中的事件记录类在一个查询中计数、分组、排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12082096/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com