2016-08-15 171 views
1

我有相同的名稱字段3個數據GROUP_BY而值不同結合不同領域

id | name | date  
------ | ------ | ----------- 
    1 | john | 2015-10-02 
    2 | john | 2016-09-10 
    3 | john | 2017-08-10 

我想結合成的名字單人三個值字段,並出現由領域它的價值三場2015年,2016年,2017年。如下例所示:

id | name |  2015 |  2016  |  2017 
------ | ------ | ----------- | ------------ | ----------- 
    1 | john | 2015-10-02 | 2016-09-10 | 2017-08-10 

我嘗試使用group_by,但只顯示1個字段值。 這是我的模特。

function viewkal() { 
    $this->db->order_by('name','ASC'); 
    $this->db->group_by('name'); 
    $query = $this->db->get('mytabel'); 
    return $query->result();        
} 
+0

什麼是$ this-> db?我不知道它是什麼,但我想你可能能夠鏈接查詢,例如:'$ query = $ this-> db-> get('mytabel') - > order_by('name','ASC') - > group_by('name');' – Isaac

+0

@Isaac'$ this-> db'用於在codeigniter模型中定義數據庫 –

+0

date 1/2/3的列類型是什麼? –

回答

0

你應該使用這樣一個最大的功能aggegation或最低爲按功能

$this->db->select_max('date 1'); 
$this->db->select_max('date 2'); 
$this->db->select_max('date 3'); 
+0

謝謝@scaisEdce,但date1,data2,date3,包含在一張表['id','name','YEAR(date1,data2,date3,)'我按年份分割,所以他們很難使用功能 –

0

您可以使用自定義的SQL查詢這個分組。像這樣的意志集團的東西concatente領域:

SELECT name, 
GROUP_CONCAT(date1 SEPARATOR '') AS date1, 
GROUP_CONCAT(date2 SEPARATOR '') AS date2, 
GROUP_CONCAT(date3 SEPARATOR '') AS date3 
FROM `mytable` GROUP BY name 

我們定義的分離是沒有,否則我們將圍繞着田野逗號。此方法適用於字符串和日期字段。要在CodeIgniter中使用自定義查詢,請將查詢傳遞給:

$this->db->query("YOUR QUERY");