2016-12-12 4 views
1

Привет Я пытаюсь запрос с OrderBy и GroupBy вместе и пришли к этому решению, которое работает нормально вот мой запросLaravel OrderBy с GroupBy SQL

SELECT p1.year_id,p1.tbl_wsp_master_id ,tbl_wsp_masters.WSP_Name 
FROM tbl_wsp_years p1 
INNER JOIN 
(
    SELECT max(year_id) MaxPostDate,tbl_wsp_master_id 
    FROM tbl_wsp_years 
    GROUP BY tbl_wsp_master_id 
) p2 
    ON p1.tbl_wsp_master_id = p2.tbl_wsp_master_id 
    AND p1.year_id = p2.MaxPostDate 
INNER JOIN tbl_wsp_masters 
ON tbl_wsp_masters.id = p1.tbl_wsp_master_id  
order by p1.year_id desc 

, но как я могу это сделать в Laravel красноречив.
Благодарим Вас за любые предложения

+0

вы даже пробовали? – Beginner

ответ

0

Я решил, что таким образом благодаря

DB::table('tbl_wsp_years as y1') 
     ->join('tbl_wsp_masters', 'tbl_wsp_masters.id', '=', 'y1.tbl_wsp_master_id') 
     ->select('tbl_wsp_masters.WSP_Name AS WSP_Name', 'y2.*') 
     ->join(DB::raw('(SELECT MAX(year_id) MaxYear, tbl_wsp_master_id FROM tbl_wsp_years GROUP BY tbl_wsp_master_id) y2'), 
       function($join) 
       { 
        $join->on('y1.tbl_wsp_master_id', '=', 'y2.tbl_wsp_master_id'); 
        $join->on('y1.year_id','=','y2.MaxYear'); 
       }) 
     ->orderBy('y1.year_id', 'DESC') 
     ->get();