codeigniter 中是不是有子查询库?或者我如何在codeigniter 3中进行子查询?

Posted

技术标签:

【中文标题】codeigniter 中是不是有子查询库?或者我如何在codeigniter 3中进行子查询?【英文标题】:is there subqueries library in codeignoter ? or how i can make subqueries in codeigniter 3?codeigniter 中是否有子查询库?或者我如何在codeigniter 3中进行子查询? 【发布时间】:2021-05-12 04:30:03 【问题描述】:

我只是想在 codeigniter3 中创建一些子查询,但我不知道如何.. 我尝试使用本机,但它不起作用,不知道为什么。但我想是因为我将 $kode_brg 和 $tgl_brlaku 放在查询 sql 中,所以可能 bcz 它不起作用。无论如何。我真的希望有人可以帮助我并教我如何使用 CI3 进行子查询..

这是我想在 CI 中使用的查询,但它不适用于本机

 public function getharga($tgl_berlaku)
    $kode_brg =$this->input->post('kode_brg');
    $tgl = $this->input->post('tgl_berlaku');
    $tgl_brlaku = date('Ymd', strtotime($tgl));
    //print_r($tgl_brlaku);
    $x = $this->db->query('select a.kode_brg,c.nama_brg,a.harga_beli from mcmharga_beli a
        inner join(select kode_brg,max(tgl_berlaku) tgl_berlaku from mcmharga_beli
        where tgl_berlaku<="$tgl_brlaku" group by kode_brg) 
        b on b.kode_brg=a.kode_brg and b.tgl_berlaku=a.tgl_berlaku
        inner join mcmbarang c on c.kode_brg=a.kode_brg
        where a.kode_brg="$kode_brg"');
    //print_r($x->result());die;
 

【问题讨论】:

这部分行代码错误inner join(select kode_brg,max(tgl_berlaku) tgl_berlaku from mcmharga_beli where tgl_berlaku&lt;="$tgl_brlaku" group by kode_brg)。您只能输入表名而不是数据。所以交叉检查你的这部分工作 这有帮助吗? ***.com/a/65052843/2275490 首先感谢兄弟的回复..这不是数据,而是数据库中列的名称。 @ChibuezeAgwu tnx 分享我亲爱的.. 我会尝试使用它,我希望它能工作.. 祝我一切顺利:) @Vickel 所有最好的兄弟。但是您不能调用列。如果对您有帮助,请查看下面的答案 【参考方案1】:

现在它的工作..我使用正常的方式,因为子查询是 lil 但对我来说很难,因为我以前从未学习或尝试过。所以我对此完全视而不见。 这就是我为使它工作所做的。

 public function getharga($tgl_berlaku)
$kode_brg =$this->input->post('kode_brg');
$tgl = $this->input->post('tgl_berlaku');
$tgl_brlaku = date('Y-m-d', strtotime($tgl));
$this->db->select('a.kode_brg,harga_beli,b.nama_brg');
$this->db->select_max('a.tgl_berlaku');
$this->db->from('mcmharga_beli a');
$this->db->where('a.tgl_berlaku <=', $tgl_brlaku);
$this->db->group_by('a.kode_brg');
$this->db->join('mcmbarang b', 'b.kode_brg = a.kode_brg', 'left');
$this->db->where('a.kode_brg', $kode_brg);
return $this->db->get()->result_array();

【讨论】:

【参考方案2】:

你好兄弟,我只是想帮你重写你的代码。检查它是否适合你

public function getharga($tgl_berlaku) 

    $kode_brg =$this->input->post('kode_brg');
    $tgl = $this->input->post('tgl_berlaku');
    $tgl_brlaku = date('Ymd', strtotime($tgl));

    //print_r($tgl_brlaku);

    $x = $this->db->query('
        SELECT a.kode_brg, c.nama_brg, a.harga_bel
        FROM mcmharga_beli a
        inner join the_table_name_you_want_to_join b
        /** 
         * (select kode_brg,max(tgl_berlaku) tgl_berlaku from mcmharga_beli 
         * where tgl_berlaku<="$tgl_brlaku" group by kode_brg)
         */
        ON b.kode_brg = a.kode_brg and b.tgl_berlaku = a.tgl_berlaku
        INNER JOIN mcmbarang c on c.kode_brg = a.kode_brg
        WHERE a.kode_brg = "$kode_brg"
    ');
    //print_r($x->result());
    die;

所以请检查这是否适合您。如果不回电。我是来帮忙的

【讨论】:

嗨,兄弟,我非常感谢您为我所做的一切。我已经尝试了您的代码,它显示错误`您的 SQL 语法有错误;检查与您的 MariaDB 服务器版本相对应的手册,以在第 5 行 mcmharga_beli 的 'ON b.kode_brg = a.kode_brg 和 b.tgl_berlaku = a.tgl_berlaku INNER J...' 附近使用正确的语法,其中 tgl_berlaku 我修改了你给我的代码,$kode_brg n $tgl_brlaku 显示为字符串,但仍然有错误你的 SQL 语法有错误;检查与您的 MariaDB 服务器版本相对应的手册,以在第 5 行内部连接处的“ON b.kode_brg=a.kode_brg 和 b.tgl_berlaku=a.tgl_berlaku INNER J”附近使用正确的语法(选择 kode_brg,max(tgl_berlaku) tgl_berlaku 来自 mcmharga_beli,其中 tgl_berlaku remove /** * (select kode_brg,max(tgl_berlaku) tgl_berlaku from mcmharga_beli * where tgl_berlaku&lt;="$tgl_brlaku" group by kode_brg) */ from the query string 那是错误

以上是关于codeigniter 中是不是有子查询库?或者我如何在codeigniter 3中进行子查询?的主要内容,如果未能解决你的问题,请参考以下文章

Spring Data:查询注释中是不是可以有子查询?

codeigniter 活动记录,生成,但不执行查询

如何测试我的 MySQL 更新查询在 CodeIgniter 中是不是成功? [复制]

sql 查询父级菜单是不是有子菜单 怎么写?

如何在 Codeigniter 中检测创建、更新、删除查询是不是成功

CodeIgniter 2.1.0 的会话库中是不是有任何已知的错误?为啥我会被踢出去? [关闭]