2017-06-09 52 views
-1

SELECT mc.pr_category_id, mc.parents, mc.level, mc.lft, mc.rgt, mcdscr.cat_name FROM table_cat as mc RIGHT JOIN (SELECT c.*, dscr.cat_name FROM table_cat AS c JOIN table_cat_description AS dscr ON c.pr_category_id = dscr.pr_category_id AND c.pr_category_id = $pr_category_id ) AS test ON (mc.rgt < test.rgt) AND mc.lft > test.lft JOIN table_cat_description AS mcdscr ON mc.pr_category_id = mcdscr.pr_category_id ORDER BY mcdscr.cat_name ASC Lavarel DB子查詢和子查詢中的選擇

我正在使用leftJoin但不工作。你能幫助子查詢嗎?

+0

你能多解釋一下嗎 – Shibon

+0

你試圖完成什麼 – Shibon

回答

0

沒有測試過..但理念應該在那裏。

$sql1 = DB::table(DB::raw('SELECT c.*, dscr.cat_name FROM table_cat AS c JOIN table_cat_description AS dscr ON c.pr_category_id = dscr.pr_category_id AND c.pr_category_id = $pr_category_id 
    ')); 
$sql2 = DB::table(DB::raw('SELECT mc.pr_category_id, mc.parents, mc.level, mc.lft, mc.rgt, mcdscr.cat_name')); 

$query = DB::table(DB::raw("($sql) AS mc"))->leftJoin(DB::raw('($sql2) as test'), function($join) 
     { 
     $join->on('mc.rgt', '<', 'test.rgt'); 
     $join->on('mc.lft', '>', 'test.lft'); 
     }) 
    ->join('table_cat_description AS mcdscr', 'mc.pr_category_id', '=', 'mcdscr.pr_category_id') 
    ->orderBy('mcdscr.cat_name', 'asc') 
    ->get(); 
0
return $data = DB::table("table_cat ") 
    ->select("table_cat_description .*") 
    ->join(DB::raw("(SELECT c.*, dscr.cat_name FROM table_cat AS c 
       JOIN table_cat_description AS dscr ON c.pr_category_id = dscr.pr_category_id 
       AND c.pr_category_id = 20 AND dscr.lang = 'vi' 
      ) as test"),function($join){ 
      $join->on('test.pr_category_id', '=', 'pp_product_category.pr_category_id'); 
      $join->orOn('test.parents', '=', 'pp_product_category.pr_category_id'); 
    }) 
    ->join('table_cat_description ', 'table_cat .pr_category_id', '=', 'pp_product_category_desc.pr_category_id') 
    ->whereRaw("table_cat_description.lang = 'en'") 
    ->orderBy('table_cat .level', 'asc') 
    ->get(); 

我使用的查詢和工作。非常感謝你