【发布时间】:2018-09-21 20:35:31
【问题描述】:
我正在尝试在 CodeIgniter 中实现以下结果
SELECT location, COUNT(location), AVG(review) FROM progrodb.tickets WHERE datesubmitted BETWEEN '2018-9-1' AND '2018-9-30' AND location = 'location'
输出需要是;
Location|Total Tickets|Avg Review<br>
location|3 |4.5
此表应包含每个位置的结果。 SQL 语句按原样提供单个位置的结果,现在我需要为总共 22 个位置执行此操作。
我尝试了以下尝试,但是在 var_dump() 结果返回 null 之后
public function generatereport(){
// Set Page Title
$this->data['page_title'] = 'Generate Report';
$rules = $this->support_m->rules_report;
$this->form_validation->set_rules($rules);
$startdate = $this->input->post('startdate');
$enddate = $this->input->post('enddate');
define('locations', array('Shoppers Fair Blue Diamond', 'Shoppers Fair Burke Road', 'Shoppers Fair Brunswick', 'Shoppers Fair Duhaney Park', 'Shoppers Fair Greater Portmore', 'Shoppers Fair View', 'Shoppers Fair Junction', 'Shoppers Fair Liguanea', 'Shoppers Fair Manchester'));
if ($this->form_validation->run() == TRUE){
$results = $this->db->select('location, count(location) as location_count, AVG(review) as review_avg')
->where('datesubmitted BETWEEN "'.$startdate.'" AND "'.$enddate.'"')
->group_by('location')
->get('tickets')->result();
var_dump($results);
}
// Load view
$this->data['subview'] = 'admin/tickets/report';
$this->load->view( 'admin/body', $this->data );
}
现在得到了以下转储,我试图将结果传递给视图,但收到错误未定义变量:报告并尝试获取非对象的属性。
【问题讨论】:
-
它是正确的,因为在你的 where 条件下有 "where location='locaition'" 请注意,你应该在使用聚合函数时使用 groupy
-
是的,只需删除 AND location='location' 或者如果您想限制结果数量,请使用 LIMIT 关键字
标签: php mysql sql codeigniter codeigniter-3