2017-09-25 103 views
0

该场景是我是管理员,我有一个会话,会话表由一个session_id,coach_name,日期(格式Y-m-d)组成。 现在我想要统计每个“MONTH”教练的总活动。 所以我的观点是如何在SQL查询中获得这种输出。Codeigniter使用月份计数?

期望的输出是每个教练每月的活动量。

Name  | No. of session this month 
Coach_name1 = 13 
Coach_name2 = 5 

这是我目前的查询,让我的教练的名字,但我不知道如何在您的查询中获取每月

public function getAll(){ 
    $query = $this->db->query('SELECT DISTINCT coach_name FROM sessions); 
    return $query->result(); 
} 

回答

0

使用此查询以获得结果。 使用MySQL MONTH()从日期获取月份编号并按组编号。你会得到所有明智的数据。

SELECT coach_name, 
     Count(*) AS activities 
FROM sessions 
WHERE Month(date) = 8 //for specfic month 
GROUP BY coach_name, Month(date) // for all months 

使用此查询dynamincally得到基于系统日期

SELECT coach_name, 
     Count(*) AS activities 
FROM sessions 
WHERE Month(date) = MONTH(CURRENT_DATE()) //for selecting current month. 
GROUP BY coach_name 
+0

我如何使用没有特定月份?像它的实时时间,为下一个九月和下一个月 – Faith

+0

删除从哪里claue,只能使用Group By,或者你可以使用where子句中的当前月份检查更新的答案 –

+0

非常感谢! – Faith

0

使用MySQL的MONTH()。所以基本上,如果所有的数据都在您的会话表中,请在您的查询中尝试以下内容。

SELECT DISTINCT(`name`),COUNT(`name`) AS `activity` FROM `session` 
WHERE MONTH(`date`)=8 GROUP BY `name`; 

入住SQLFiddle

0

你必须像下面准备查询:

select 
     coach_name, 
     month(your_date_field), 
     count(1) 
from 
     your_table 
where 
     month(your_date_field) = 8 
group by 
     coach_name, month(your_date_field) 

这将返回的记录,像下面,

| coach_name | month(your_date_field) | count(1) | 
+---------------+------------------------+------------+ 
| Coach_name1 |     8 |  x | 
| Coach_name2 |     8 |  x | 
| Coach_name3 |     8 |  x | 
+---------------+------------------------+------------+ 

在笨

$this->db->select("coach_name, month(your_date_field) as month_number,count(1) as counts"); 
$this->db->where('month(your_date_field)',8); 
$this->db->group_by('coach_name,MONTH(your_date_field)'); 
$query = $this->db->get('your_table'); 

// results 
foreach ($query->result_array() as $row) 
{ 
     // do this to see array 
     print_r($row); 

     // to access individual fields 
     echo $row['coach_name']; 
     echo $row['month_number']; 
     echo $row['counts']; 
} 
+1

它的工作电流一个月,但我怎么呼应数区域? – Faith

+0

@Faith:你必须遍历查询结果,开始看这里https://www.codeigniter.com/userguide3/database/results.html –

+0

我打开了,<?php echo $ sessionlist - >'HERE'?> idk投什么 – Faith