group_by数据库查询结果不起作用



所以我有以下简单的数据库表来简化事情

Client_id | Client_name     | Client_state 
1         | John            | New York           
2         | Nick            | New York                     
3         | Marc            | California                  
4         | Jason           | California         
5         | Gabriel         | Seattle                    
6         | Alex            | Seattle   

所以每当我点击以下按钮时

<button type="button" class="btn results btn-primary">results</button>

我有一个Javascript函数,它进行ajax调用以返回结果。这是我的函数

$('.results').on('click',function(){
$.ajax({
type: 'ajax',
method: 'get',
async: false,
url: '<?php echo base_url() ?>client_results',
dataType: 'json',
success: function(response){
console.log(response)
}, //end success function
error: function(){
alert('Error');
}
});//end ajax call

这是我的模态函数

public function client_results(){
$this->db->select('*');
$this->db->group_by("Client_state"); // whenever i remove this i get all the rows without a problem 
$query = $this->db->get('Clients');
return $query->result_array();
}

所以问题是每当我尝试按行的状态对行进行分组时,都会收到以下错误! 但是一旦我通过一行代码删除了 groupe,一切正常,我就可以毫无问题地在控制台中记录所有行!问题是我希望它们按州分组!

请帮帮我!

MySQL无法在本地执行此操作。你必须得到你需要的东西,然后使用编程语言(在这种情况下可能是PHP(迭代循环。这是该算法外观的简单版本。

public function client_results(){
$this->db->select('*');
$query = $this->db->get('Clients');
$results = $query->result_array();
$groupedResults = array();
foreach($results as $row) {
if (!array_key_exists($row->Client_state, $groupedResults)) {
$groupedResults[$row->Client_state] = array();
}
$groupedResults[$row->Client_state][] = $row->Client_name;
}
return $groupedResults;
}

>group by在执行select *时没有多大意义。不在 Codeigniter 的 Query Builder 上,不在 SQL 上

原因是分组旨在生成所有数据的分组摘要(行合并(,但您没有具体说明要对分组行执行的操作。

例如,获取示例数据。如果按州分组,client_id列和client_name列会发生什么情况?SQL真的不知道如何处理它们,因为您的查询不明确。

您想了解每个州有多少个客户端吗? 尝试

$this->db->select('Client_state,count(*) as n');
$this->db->from('Clients');
$this->db->group_by('Client_state');

以上将输出:

Client_state | n
New York     | 2
California   | 2
Seattle      | 2

是否要添加每个州所有客户端的客户端 ID? 尝试

$this->db->select('Client_state,sum(Client_id) as sum');
$this->db->from('Clients');
$this->db->group_by('Client_state');

以上将输出:

Client_state | sum
New York     | 3
California   | 7
Seattle      | 11

请记住,在分组时,您需要具体说明要分组的内容以及所需的结果。

相关内容

  • 没有找到相关文章

最新更新