我已在其他帖子上发布了有关此问题的问题,但我想在此处尝试更具体
所以我在这里使用codeigniter和https://github.com/IgnitedDatatables/Ignited-Datatables/wiki/Function-Reference
中的库进行了以下查询<?php
public function GetQuery(){
$this->datatables->select('tablessc.Name As region,p.name As name,tabled.test As test,
MAX(CASE WHEN p.id= p.cid and flavor = 2 THEN \'Pass\' ELSE \'Fail\' end) as \'Pass\'
')
->from('drinks p');
$this->datatables->join('tableb ', 'tableb.id=p.pid','inner');
$this->datatables->join('tablec','tablec.TerritoryId=tablec.TerritoryId','inner');
$this->datatables->join('tabled','tablec.AccountId=tablec.AccountId','inner');
$this->datatables->join('tables','d.AccountId = tabless.AccountId ','inner');
$this->datatables->join('tablessc','tablesc.Code = p.region and sc.CodeGroup =\'Region\'','inner');
$this->datatables->where('region >','0');
$this->datatables->where('p.location','0');
$this->datatables->group_by('tablessc.Name');
$this->datatables->group_by('p.id');
$this->datatables->group_by('p.name');
$this->datatables->group_by('atabled.test');
echo $this->datatables->generate();
}
?>
好的,如果我在microsoft sql上运行此查询,我得到没有错误,我得到我想要的结果,但如果我从页面调用此函数,它将给我一个错误
Error Number: 42000
[Microsoft][SQL Server Native Client 10.0][SQL Server]Column 'drinks.region' is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause
SELECT * FROM drinks p INNER JOIN.....
请注意这里为什么错误显示sql正在执行select * 我尝试取出最大聚合功能,它仍然会做同样的错误。 摆脱这个错误的唯一方法是取出聚合函数MAX和group by子句。哪个不是我想要的查询。其他任何人都遇到过这个库的问题?谢谢
答案 0 :(得分:0)
在SQL Server中,select列中使用的所有列都必须出现在group_by子句中,除非该列用于聚合函数。
&#39; get_total_results&#39;数据表库中的函数生成&#39; SELECT * FROM table_name GROUP_BY column_name&#39;查询。所以&#39; drinks.region&#39;在您的查询中未实际选择的列出现在错误消息中。
作为修复尝试添加
if(count($this->group_by) > 0)
{
$this->ci->db->select($this->columns);
}
在Datatable.php文件中的get_total_results()函数内