我要查询查询数据。那是文件。
"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()但是它返回了sql
"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"我不确定这是真的。
发布于 2016-10-10 08:09:47
如果要定制select,则需要使用原始查询作为select参数,如下所示:
->select(\DB::raw($squery))https://stackoverflow.com/questions/39952943
复制相似问题