2014-06-09 63 views
0

我有ORM查詢像t這:Kohana的順序GROUP BY和計數

$userCountries = ORM::factory('User') 
       ->select(array(DB::expr('countries.code, COUNT("countries.id") as total'))) 
       ->join('countries') 
       ->on('user.country_id', '=', 'countries.id') 
       ->group_by('country.name') 
       ->order_by('total', 'DESC') 
       ->find_all(); 

我要的是來自全國總用戶數量的國家代碼。

我不知道這裏出了什麼問題。我花了3個小時沒有成功。

這個查詢有什麼問題?

+0

雖然使用ORM庫,但查詢可能沒有任何問題。這意味着'$ userCountries'填充了'User'類型的ORM模型。嘗試使用'DB :: select()'重寫查詢,這應該只需要改變幾行。 – AmazingDreams

回答

0

你的SELECT PARAMS是錯誤的 ->select('countries.code', array(DB::expr('COUNT("countries.id")', 'total')))

我認爲本集團應 ->group_by('countries.name') instead of ->group_by('country.name')

所以你總的查詢會像

$userCountries = ORM::factory('User') 
      ->select('countries.code', array(DB::expr('COUNT("countries.id")', 'total'))) 
      ->join('countries') 
      ->on('user.country_id', '=', 'countries.id') 
      ->group_by('countries.name') 
      ->order_by('total', 'DESC') 
      ->find_all();` 

檢查了這一點...

+0

謝謝,這裏有點不對勁。我有未定義的偏移:1 - 錯誤 – masteryoda