2016-01-18 4 views
1

Я использую mysql и пытаюсь написать этот запрос в модель Codeigniter. Этот запрос выполняется отлично в phpmyAdmin.Как написать этот сложный запрос в codeigniter?

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

Нет таблицы

SELECT *

Имя файла: C: \ XAMPP \ HTDOCS \ himbauanwpbaru \ system \ database \ DB_driver.php

Номер строки: 330

Как я решаю эту проблему? Есть ли что-то, что я оставил от кода выше? Я ценю любые предложения и решения. Спасибо

ответ

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; 
+0

Спасибо, Рави Хирани. Ваш код работает отлично. –

+0

@mas_budhi: Если он работает нормально, отметьте его как принятый. :) –

Смежные вопросы