【问题标题】:How write this complex query in codeigniter?如何在 codeigniter 中编写这个复杂的查询?
【发布时间】:2016-04-23 10:21:24
【问题描述】:

我使用 mysql 并尝试将此查询写入 Codeigniter 模型。此查询在 phpmyAdmin 中完美运行。

SELECT 
        a.ar, 
        a.jabatan, 
        COUNT(*) AS JumlahWPBaru, 
        SUM( 
            CASE WHEN a.no_shim IS NOT NULL 
            THEN 1 
            WHEN a.no_shim IS NULL 
            THEN 0 
            END ) AS JumlahHimbauan
        FROM (

        SELECT 
            a.ar, 
            c.jabatan, 
            a.npwp, 
            a.kpp, 
            a.cab, 
            a.namawp, 
            b.kd_shim, 
            b.no_shim, 
            b.tgl_shim
        FROM mfwpbudi a
        LEFT JOIN tb_shimbauan b ON ( a.npwp = b.npwp ) 
        LEFT JOIN easystp_user c ON ( SUBSTR( a.ar, 1, 9 ) = c.id_user ) 
        WHERE a.tanggal_daftar >  '2013-12-31'
        AND c.jabatan =  '05E'
        ) AS a
        GROUP BY a.ar

这里是我写的模型。

function m_data_penyampaian_shim()
{
    $this->db->query("SELECT 
        a.ar, 
        a.jabatan, 
        COUNT(*) AS JumlahWPBaru, 
        SUM( 
            CASE WHEN a.no_shim IS NOT NULL 
            THEN 1 
            WHEN a.no_shim IS NULL 
            THEN 0 
            END ) AS JumlahHimbauan
        FROM (

        SELECT 
            a.ar, 
            c.jabatan, 
            a.npwp, 
            a.kpp, 
            a.cab, 
            a.namawp, 
            b.kd_shim, 
            b.no_shim, 
            b.tgl_shim
        FROM mfwpbudi a
        LEFT JOIN tb_shimbauan b ON ( a.npwp = b.npwp ) 
        LEFT JOIN easystp_user c ON ( SUBSTR( a.ar, 1, 9 ) = c.id_user ) 
        WHERE a.tanggal_daftar >  '2013-12-31'
        AND c.jabatan =  '05E'
        ) AS a
        GROUP BY a.ar");
    $qry=$this->db->get();
    return $qry->result();
}

但我得到了错误:

错误号:1096

没有使用表

选择 *

文件名:C:\xampp\htdocs\himbauanwpbaru\system\database\DB_driver.php

行号:330

我如何解决这个问题?我从上面的代码中留下了什么吗? 我感谢任何建议和解决方案。 谢谢

【问题讨论】:

    标签: php mysql codeigniter


    【解决方案1】:

    $this->db->query() 函数仅在成功或失败时返回 TRUE/FALSE。它不返回数据库结果集,也不设置查询计时器,也不编译绑定数据,也不存储查询以供调试。它只是让您提交查询。大多数用户很少使用此功能。

    试试这个方法:-

    $sql  = "SELECT 
            a.ar, 
            a.jabatan, 
            COUNT(*) AS JumlahWPBaru, 
            SUM( 
                CASE WHEN a.no_shim IS NOT NULL 
                THEN 1 
                WHEN a.no_shim IS NULL 
                THEN 0 
                END ) AS JumlahHimbauan
            FROM (
    
            SELECT 
                a.ar, 
                c.jabatan, 
                a.npwp, 
                a.kpp, 
                a.cab, 
                a.namawp, 
                b.kd_shim, 
                b.no_shim, 
                b.tgl_shim
            FROM mfwpbudi a
            LEFT JOIN tb_shimbauan b ON ( a.npwp = b.npwp ) 
            LEFT JOIN easystp_user c ON ( SUBSTR( a.ar, 1, 9 ) = c.id_user ) 
            WHERE a.tanggal_daftar >  '2013-12-31'
            AND c.jabatan =  '05E'
            ) AS a
            GROUP BY a.ar";
    
    $query = $this->db->query($sql);
    $result = $query->result_array();
    return $result;
    

    【讨论】:

    • @mas_budhi:如果工作正常,则将其勾选为已接受。 :)
    猜你喜欢
    • 2015-08-04
    • 2015-03-28
    • 1970-01-01
    • 2015-08-05
    • 2021-09-10
    • 1970-01-01
    • 2017-11-18
    • 1970-01-01
    相关资源
    最近更新 更多