简体   繁体   中英

CodeIgniter - Change sub-query

I want to change this sub-query to CodeIgniter. How to make this query with rule CodeIgniter.

select *, 
            mahasiswa.nim AS id, (select count(id_absen) 
            from absen ABS 
            where ABS.nim = mahasiswa.nim 
            and tanggal >= DATE_SUB('$tgl_tutup_ujian', INTERVAL 3 MONTH) and tanggal <= '$tgl_tutup_ujian') AS jml_absen, 
            (select count(id_bayar) from pembayaran_iuran where ((bulan=MONTH(DATE_SUB('$tgl_tutup_ujian', INTERVAL 3 MONTH)) 
            and tahun=YEAR(DATE_SUB('$tgl_tutup_ujian', INTERVAL 3 MONTH)))
            or (bulan=MONTH(DATE_SUB('$tgl_tutup_ujian', INTERVAL 2 MONTH)) 
            and tahun=YEAR(DATE_SUB('$tgl_tutup_ujian', INTERVAL 2 MONTH))) 
            or (bulan=MONTH(DATE_SUB('$tgl_tutup_ujian', INTERVAL 1 MONTH)) 
            and tahun=YEAR(DATE_SUB('$tgl_tutup_ujian', INTERVAL 1 MONTH)))) 
            AND pembayaran_iuran.nim = mahasiswa.nim) 
            AS jml_bayar from mahasiswa 
            left join pendaftaran_ukt on pendaftaran_ukt.nim = mahasiswa.nim
            where nama like '$nama'

i try like this but not working.

$this->db->select('select *,mahasiswa.nim AS id, (select count(id_absen)');
        $this->db->from('absen ABS');
        $this->db->where('ABS.nim = mahasiswa.nim 
            and tanggal >= DATE_SUB('$tgl_tutup_ujian', INTERVAL 3 MONTH) and tanggal <= '$tgl_tutup_ujian') AS jml_absen');
        $this->db->select(' (select count(id_bayar)');
        $this->db->from('pembayaran_iuran');
        $this->db->where('((bulan=MONTH(DATE_SUB('$tgl_tutup_ujian', INTERVAL 3 MONTH)) 
            and tahun=YEAR(DATE_SUB('$tgl_tutup_ujian', INTERVAL 3 MONTH)))
            or (bulan=MONTH(DATE_SUB('$tgl_tutup_ujian', INTERVAL 2 MONTH)) 
            and tahun=YEAR(DATE_SUB('$tgl_tutup_ujian', INTERVAL 2 MONTH))) 
            or (bulan=MONTH(DATE_SUB('$tgl_tutup_ujian', INTERVAL 1 MONTH)) 
            and tahun=YEAR(DATE_SUB('$tgl_tutup_ujian', INTERVAL 1 MONTH)))) 
            AND pembayaran_iuran.nim = mahasiswa.nim)
            AS jml_bayar from mahasiswa ');
        $this->db->join('pendaftaran_ukt','pendaftaran_ukt.nim = mahasiswa.nim','left');
        $this->db->order_by('id_ukt','asc');
        $this->db->limit($limit, $offset);

What am I doing wrong?

CodeIgniter db library dose not support sub query manipulation, you can manage query operation by $this->db->query() .

PS: You can also install sub query manipulation library, Sub query library

see more detail Click here

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM