2017-10-07 39 views
-1

我有問題,我使用codeigniter。我有一個很長的SQL,我會用它來我的codeigniter。我的database.php是:SQL與CodeIgniter中的一樣

... 
$db = 'simpeg'; 
.. 

我將這個sql應用到代碼點火器。 我長的SQL是: ...

"SELECT 
      thsms, 
      kd_dosen, 
      nama, 

      fakultas_ekonomi, 
      fakultas_hukum, 
      fakultas_teknik_sipil_dan_perencanaan, 
      fakultas_teknologi_industri, 

      fakultas_mipa, 
      fakultas_iai, 
      fakultas_psikologi_dan_ilmu_sosial_budaya, 
      fakultas_kedokteran, 
      fakultas_d3k, 
      fakultas_d3fe, 
      fakultas_PM, 

      fakultas_ekonomi + fakultas_hukum + fakultas_teknik_sipil_dan_perencanaan + fakultas_teknologi_industri + fakultas_mipa + fakultas_iai + fakultas_psikologi_dan_ilmu_sosial_budaya + fakultas_kedokteran + fakultas_d3k 
      AS total_durasi 

     FROM (
      SELECT 
       thsms, 
       kd_dosen, 
       nama, 

       SUM(IF(fakultas = 'FE', sks,0)) AS fakultas_ekonomi, 
       SUM(IF(fakultas = 'FH', sks,0)) AS fakultas_hukum, 
       SUM(IF(fakultas = 'FTI', sks,0)) AS fakultas_teknologi_industri, 
       SUM(IF(fakultas = 'FTSP', sks,0)) AS fakultas_teknik_sipil_dan_perencanaan, 
       SUM(IF(fakultas = 'MIPA', sks,0)) AS fakultas_mipa, 
       SUM(IF(fakultas = 'FK', sks,0)) AS fakultas_kedokteran, 
       SUM(IF(fakultas = 'FPSB', sks,0)) AS fakultas_psikologi_dan_ilmu_sosial_budaya, 
       SUM(IF(fakultas = 'FIAI', sks, 0)) AS fakultas_iai, 
       SUM(IF(fakultas = 'D3K', sks, 0)) AS fakultas_d3k, 
       SUM(IF(fakultas = 'D3FE', sks, 0)) AS fakultas_d3fe, 
       SUM(IF(fakultas = 'PM', sks, 0)) AS fakultas_PM 

       FROM 
       sks_mengajar 
      WHERE thsms = '".$tahun_akademik_berlaku."' AND nama NOT LIKE '%DOSEN%' AND nama NOT LIKE '%ASS.%' 
      GROUP BY nama 
     ) AS temp_table" 
... 

我需要在這個笨長SQL更改短SQL。 是這樣的:

$this->db-> ..... 

謝謝你的幫忙。

+0

你需要什麼?不清楚你在問什麼 –

+0

這是所有記錄在這裏:https://www.codeigniter.com/user_guide/database/query_builder.html#query-builder-class – Vickel

+0

你爲什麼要轉換它?正如@MrCarrot所指出的那樣,您可以將它用於參數傳遞,但查詢構建器庫的最大好處是可以更簡單地進行動態查詢。如果您的查詢有效,我不會嘗試在PHP中重新創建它,以便將其重新轉換回來...... – kchason

回答

0

您不能使用CodeIgniter的查詢生成器進行復雜的子查詢。

你會得到最好的是:

$sql = "SELECT thsms, kd_dosen, nama... WHERE thsms = ? AND..." 

$params = array($tahun_akademik_berlaku); 

$query = $this->db->query($sql, $params);