2016-10-10 4 views
0

私はクエリデータのクエリを持っています。それは文書です。Laravelに変換する

"SELECT   
    zk_z_hako * CASE WHEN zk_n_iri> 0 THEN zk_n_iri ELSE 1 END 
    + zk_z_bara 
    - ifnull(
       sum(
         ns_hako 
      * CASE WHEN zk_n_iri> 0 THEN zk_n_iri ELSE 1 END     
        * CASE WHEN ns_tr_kbn in (0,6) OR (ns_tr_kbn = 1 AND ns_ns_kbn = 7) THEN 1 
         WHEN ns_tr_kbn in (1,7)          THEN (-1) 
       ELSE 0 
         END 
        + ns_bara 
        * CASE WHEN ns_tr_kbn in (0,6) OR (ns_tr_kbn = 1 AND ns_ns_kbn = 7) THEN 1 
          WHEN ns_tr_kbn in (1,7)          THEN (-1) 
        ELSE 0 
         END) 
       ,0) AS TOTAL_BARA 
FROM t_table1 
LEFT JOIN t_table2 
       ON  ns_kno = zk_kno 
AND   ns_show_flg = 0 
AND  ns_ymd > 'Date param'  
WHERE  zk_kno = Value param; 

私はララベルのマスターではありません。今私はlaravelとの仕事のためにこのクエリを変換する必要があります。誰でも私を助けることができますか?

このクエリを試してみる必要があります。

$squery = 'zk_z_hako * CASE WHEN zk_n_iri> 0 THEN zk_n_iri ELSE 1 END 
    + zk_z_bara 
    ifnull(
       sum(
         ns_hako 
      * CASE WHEN zk_n_iri> 0 THEN zk_n_iri ELSE 1 END     
        * CASE WHEN ns_tr_kbn in (0,6) OR (ns_tr_kbn = 1 AND ns_ns_kbn = 7) THEN 1 
         WHEN ns_tr_kbn in (1,7)          THEN (-1) 
       ELSE 0 
         END 
        + ns_bara 
        * CASE WHEN ns_tr_kbn in (0,6) OR (ns_tr_kbn = 1 AND ns_ns_kbn = 7) THEN 1 
          WHEN ns_tr_kbn in (1,7)          THEN (-1) 
        ELSE 0 
         END) 
       ,0) AS TOTAL_BARA '; 
     $param1= '20160310'; 
     $param2= '1972640100'; 
     $results = DB::table('table1') 
      ->select($squery) 
     ->leftJoin('table2', function($join) use ($param1) 
      { 
       $join->on('table1.ns_kno', '=', 'table2.zk_kno'); 
       $join->on('table1.ns_show_flg', '=', DB::raw(0)); 
       $join->on('ns_ymd','>',DB::raw("'".$param1."'")); 
      }) 
     ->where('zk_kno', DB::raw($param2)) 
     ->toSql() 

しかし、それは私はそれが本当かわからないん

"select `zk_z_hako` as `CASE` from `t_zaikmst` left join `t_nsyutrn` on `t_nsyutrn`.`ns_kno` = `t_zaikmst`.`zk_kno` and `t_nsyutrn`.`ns_show_flg` = 0 and `ns_ymd` > '20160310' where `zk_kno` = 1972640100" 

SQLを返します。

+0

。どのようにselectを変換するか。それは複雑に見えます。 – dungphanxuan

+1

まず、 ' - > select()'に 'case、when'を追加することはできません。DB :: raw()を使ってください。 select関数では、属性を追加するだけです。参照してください。 –

+0

私はより多くを確認します – dungphanxuan

答えて

1

あなたは、このようなselectパラメータとして生のクエリを使用する必要があるよりも、カスタムを選択したい場合は:はい、私はselectコマンドに問題がある

->select(\DB::raw($squery)) 
+0

それは仕事です。ありがとうございました。 – dungphanxuan

関連する問題