Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何使用codeigniter中的GROUPBY来计算一些值?_Php_Mysql_Codeigniter - Fatal编程技术网

Php 如何使用codeigniter中的GROUPBY来计算一些值?

Php 如何使用codeigniter中的GROUPBY来计算一些值?,php,mysql,codeigniter,Php,Mysql,Codeigniter,在以下情况下,我如何使用group by: 我有一个名为Sitekey的表,在这里我有一个许可证密钥列表 Site_Key字段包含我的产品的许可证密钥。 Org_id包含已分配该密钥的组织的id 现在我有另一个表叫做激活。 其结构是: 现在在这个表中,Site_key包含licensekey。和设备信息 现在,我想在分配给谁的表中显示可用的许可证 我这样做: public function get_key() { $this->db->select('*');

在以下情况下,我如何使用group by:

我有一个名为Sitekey的表,在这里我有一个许可证密钥列表

Site_Key字段包含我的产品的许可证密钥。 Org_id包含已分配该密钥的组织的id

现在我有另一个表叫做激活。 其结构是:

现在在这个表中,Site_key包含licensekey。和设备信息

现在,我想在分配给谁的表中显示可用的许可证

我这样做:

public function get_key()
{

    $this->db->select('*');  
    $this->db->from('sitekey');
    $this->db->join('company', 'sitekey.org_id = company.id');
    $this->db->order_by('sitekey.id','desc');
    $query = $this->db->get();
    $result   = $query->result();              
    return $result;

}
现在我想得到激活表中使用的密钥数! >在sitekey表中,licenses字段包含许可证的数量,以便公司可以使用该密钥多次。现在我想从中得到我给他们的钥匙和他们用过的钥匙。 所以我想我需要使用GROUPBY,那么我如何编写这样的查询呢

我想数一数激活表中的密钥。例如,有一个键:4CAC-9CA7,那么我想知道它被使用了多少次?所以我想计算所有钥匙的数量

公司表:


试试这个也许对你有帮助

public function get_key() {
               $result=$this->db->select('*')
                      ->from('activation')
                      ->group_by('yourfield')
                      ->get();
             $key_count= $query->num_rows();   
             return $result;
}

对不起,我还不能发表评论,所以我必须发布一个答案

如果在激活表中每个键都有一行,则可以计算所有内容

$this->db->from('activation')
->where('expiry_date <', date('U'))
->count_all_results();

你试过$this->db->groupbycolumnname@AjayMakwana我在用户指南中看到了这一点。但是我不知道怎么在这里使用它!我的问题是什么here@MathBio我不明白你的意思,请解释一下,我不需要使用过期数据,我只想显示我给组织的密钥数量,以及他们从组织中使用的密钥数量公司如何添加公司表,但我想得到激活表中使用的每个密钥的计数,那么为什么你不能只按站点密钥分组呢?选择company.org\u name,sitekey.site\u key,从激活中选择COUNT*,其中user\u id=company.id从sitekey加入sitekey.org上的company\u id=company.id它必须返回公司名称,4CAC-9CA7,2次另一家公司,4CAC-9CA7,12次我不需要这里的过期数据。我只想统计一下我给他们的许可证以及他们从itin sitekey表中使用的许可证。许可证字段定义了他们可以使用的次数key@Rajan我编辑了我的答案,你能告诉我最后一部分是否适合你吗?
$this->db->from('activation')
->where('expiry_date <', date('U'))
->count_all_results();
$this->db->from('activation')
->group_by('site_key')
->where('expiry_date <', date('U'))
->count_all_results();
$this->db->from('activation a')
->select('COUNT(a.id) as used, s.licenses as max, max - used as left')
->group_by('a.site_key')
->join('sitekey s', 'a.sitekey = s.site_key')
->get()->results();