2017-06-06 12 views
0

私はこのリンクでMySQLのpipotの行を使用するコードを使用しますMySQL pivot row into dynamic number of columns それはクエリエディタとSQL fidleで動作します。私は、このようなコードを使用してCodeIgniterの上のモデルPHPでCodeIgniterのMySQLのピボット行はsqlのフィドルで実行されますが、シンタックスモデルでは機能しませんcodeigniter

のモデルにクエリを使用する場合、それは動作しません:クエリの

$query=$this->db->query(" 
    SET @sql = NULL; 
    SELECT 
    GROUP_CONCAT(DISTINCT 
    CONCAT(
    'count(case when tahun = ''', 
    tahun, 
    ''' then 1 end) AS tahun_', 
    replace(tahun, ' ', '') 
    ) 
    ) INTO @sql 
    from tb_tahun; 

    SET @sql = CONCAT('SELECT pt.jenis_perjal, ', @sql, ' from tb_jenis_perjal pt 
    left join tb_kebutuhan_perjal s 
    on pt.id_jenis_perjal = s.id_jenis_perjal 
    left join tb_tahun pd 
    on s.id_tahun = pd.id_tahun 
    group by pt.jenis_perjal'); 

    PREPARE stmt FROM @sql; 
    EXECUTE stmt; 
    DEALLOCATE PREPARE stmt; 
"); 

結果:

Err Number : 1064 
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'SELECT GROUP_CONCAT(DISTINCT CONCAT('count(case when' at line 2 

答えて

0

テキストを保存してくださいその変数をパラメータとして渡してメソッドを実行します。

$var = "SET @sql = NULL; 
     SELECT 
     GROUP_CONCAT(DISTINCT 
     CONCAT(
     'count(case when tahun = ''', 
     tahun, 
     ''' then 1 end) AS tahun_', 
     replace(tahun, ' ', '') 
     ) 
     ) INTO @sql 
     from tb_tahun; 

     SET @sql = CONCAT('SELECT pt.jenis_perjal, ', @sql, ' from tb_jenis_perjal pt 
     left join tb_kebutuhan_perjal s 
     on pt.id_jenis_perjal = s.id_jenis_perjal 
     left join tb_tahun pd 
     on s.id_tahun = pd.id_tahun 
     group by pt.jenis_perjal'); 

     PREPARE stmt FROM @sql; 
     EXECUTE stmt; 
     DEALLOCATE PREPARE stmt;"; 

    $query=$this->db->query($var); 
+0

私は同じと思いますが、私はmr @ M.suleman K漢 –

関連する問題