我有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();
}
答案 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");