2016-08-15 118 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");