2013-08-17 50 views
0

我有以下表計數,並顯示有多少的具體列結果

|id|city|job| 
|12|New York|Truck driver| 
|13|Chicago|Postman| 
|14|New York|Postman| 
|15|Las Vegas|Dealer| 
|16|Las Vegas|Dealer| 
|17|New York|Post Office| 

我希望能夠指望有每個城市有多少職位,然後用在大多數的工作返回的十大城市DESC命令。像下面

  • 紐約(3)
  • 拉斯維加斯(2)
  • 芝加哥(1)

如何做到這一點?

我的代碼看起來像這樣

$this->db->select('city'); 
$this->db->select_sum('city', 'total'); 
$this->db->group_by('city'); 
$this->db->order_by('total', 'desc'); 
$query = $this->db->get('job', 10); 

foreach ($query->result() as $row) { 
    $data[] = array(
     'total' => $row->total, 
     'city' => $row->city 
    ); 
} 

return $data; 

我把靈感來自於這個線程:COUNT/GROUP BY with active record?

但似乎並不得到它的權利。

回答

0

在這裏你去: -

$query = $this->db->query('SELECT city, COUNT(city) AS jobcount FROM `jobs` GROUP BY city ORDER BY jobcount DESC'); 

if ($query->num_rows() > 0) 
    foreach ($query->result() as $row) 
     $data[] = array(
      'total' => $row->jobcount, 
      'city' => $row->city 
     ); 

return $data; 

不要忘記交換'jobs'您的表名

+0

也許增加一個限制(MySQL的/ TOP爲MSSQL) ? –

+0

謝謝工作完美! – JohnF

0

爲什麼不使用$this->db->query();?

$this->db->query('SELECT CITY, COUNT(CITY) AS TOTAL FROM JOB GROUP BY CITY ORDER BY TOTAL DESC LIMIT 10');