2014-05-22 5 views
0

이 하위 쿼리를 CodeIgniter로 변경하고 싶습니다. CodeIgniter 규칙을 사용하여이 쿼리를 만드는 방법.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' 

나는 이처럼 시도하지만 작동하지 않습니다.

$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); 

내가 뭘 잘못하고 있니?

답변

0

라이브러리는 하위 쿼리 조작을 지원하지 않으므로 $this->db->query()까지 쿼리 작업을 관리 할 수 ​​있습니다.

PS : 당신은 또한 Sub query library

자세히를 참조 하위 쿼리 조작 라이브러리를 설치할 수 있습니다 Click here