2017-10-07 41 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);