将三个字段与group_by组合在一起,具有不同的字段

时间:2016-08-15 06:57:28

标签: php codeigniter codeigniter-2

我有3个具有相同名称字段但值不同的数据

  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();                             
}

2 个答案:

答案 0 :(得分:0)

您应该使用aggegation函数,例如max或min,按功能分组

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

答案 1 :(得分:0)

您可以为此使用自定义SQL查询。像这样的东西将对字段进行分组:

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

我们将分隔符定义为none,否则我们将在字段周围添加逗号。此方法适用于字符串和日期字段。要在CodeIgniter中使用自定义查询,请将查询传递给:

$this->db->query("YOUR QUERY");
相关问题