CodeIgniterを使用していて、データベースに2つのテーブルがあります。
最初に大陸と呼ばれ、次のようになります。
id | continent_name
-----------------------
1 | Africa
2 | Antarctica
3 | Asia
4 | Australia
5 | Europe
6 | North America
7 | South America
2番目に呼び出された状態は次のようになります。
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ループを使用します。しかし、私はどういうわけか、1つのクエリでアクティブレコードのカウント、グループ化、および順序付け機能を実現する必要があります。
これまでのところ、これは私のモデルにあります。
function get_top_continents() {
$q = $this->db->from('states')
->join('continents', 'states.continent_id = continents.id')
->group_by('continent_id')
->get();
return $q;
}
ただし、グループ内のアイテム数についても結果を注文する必要があります。
条件ごとにそのような注文を行う方法は?