首页 > 解决方案 > Group by 和 distinct 在 Codeigniter 中的 Oracle 中不起作用

问题描述

在 MySQL 中,distinct 和 group 都可以正常工作,但在 Oracle 中,它无法正常工作,提供以下错误:

对于不同:

ORA-01791: not a SELECTed expression

分组方式:

ORA-00979: not a GROUP BY expression

我的代码是:

public function getOrgModules() {
        $session_info = $this->session->userdata('logged_in');
        $org = $session_info['ORG_ID'];
        $org_group = $session_info['USERGRP_ID'];
        $org_group_level = $session_info['USERLVL_ID'];
        $user = $session_info['USER_ID'];
        //$this->db->distinct('SA_ORG_MODULES.SA_MODULE_ID');
        $this->db->select('SA_ORG_MODULES.SA_MODULE_NAME,ATI_MODULES.MODULE_NAME_BN,ATI_MODULES.MODULE_ICON, SA_ORG_MODULES.SA_MODULE_ID, ATI_MODULES.CATEGORY');
        $this->db->from('SA_UGLW_MLINK');
        $this->db->join('SA_ORG_MODULES', 'SA_UGLW_MLINK.SA_MODULE_ID = SA_ORG_MODULES.SA_MODULE_ID', 'left');
        $this->db->join('ATI_MODULES', 'SA_ORG_MODULES.MODULE_IDS = ATI_MODULES.MODULE_ID', 'left');
        $this->db->where('SA_UGLW_MLINK.USERGRP_ID', $org_group);
        $this->db->where('SA_UGLW_MLINK.UG_LEVEL_ID', $org_group_level);
        $this->db->or_where('SA_UGLW_MLINK.USER_ID', $user);
        $this->db->where('SA_UGLW_MLINK.ORG_ID', $org);
        $this->db->or_where('SA_UGLW_MLINK.CREATE_', "1");
        $this->db->or_where('SA_UGLW_MLINK.READ', "1");
        $this->db->or_where('SA_UGLW_MLINK.UPDATE_', "1");
        $this->db->or_where('SA_UGLW_MLINK.DELETE_', "1");
        $this->db->or_where('SA_UGLW_MLINK.STATUS', "1");
        $this->db->group_by('SA_ORG_MODULES.SA_MODULE_ID');
        $this->db->order_by("ATI_MODULES.SL_NO", "asc");
        return $this->db->get()->result();
    }

请帮我。提前致谢

标签: phporaclecodeigniter

解决方案


希望对你有帮助 :

COUNT(SA_ORG_MODULES.SA_MODULE_ID)在您的 select 子句中添加group by,如下所示:

$this->db->select('SA_ORG_MODULES.SA_MODULE_NAME, 
                   ATI_MODULES.MODULE_NAME_BN,
                   ATI_MODULES.MODULE_ICON, 
                   SA_ORG_MODULES.SA_MODULE_ID,  
                   ATI_MODULES.CATEGORY, 

                   COUNT(SA_ORG_MODULES.SA_MODULE_ID)
            ');

推荐阅读