2017-08-02 72 views
1

你好,我是新與laravel,我需要做的兩個連接表三者之間則組由另一個表再算上加入組由結果與兩個加入結果。我嘗試用兩個查詢第一個爲兩個加入和第二個查詢爲組由但我不知道如何加入這兩個查詢。 這是我第一次查詢三個表:會員,members_courses_assign和課程三個連接和GROUPBY LN laravel 5.4

$temp = DB::table('members') 
    ->join('members_courses_assign', 'members.externalPersonKey', '=', 'members_courses_assign.externalPersonKey') 
    ->join('courses', 'members_courses_assign.referenceNumber', '=', 'courses.referenceNumber')->where(['courses.termkey'=>$termK,'members_courses_assign.termkey'=>$termK])->get(); 

這是我的第二個查詢

$count= DB::table('files') 
        ->select('referenceNumber', DB::raw('count(*) as total')) 
        ->where(['termkey'=>$termK]) 
        ->groupBy('referenceNumber') 
        ->get(); 

然後我需要加入第一與第二的結果,我嘗試首先加入4表,但第四個表'文件'將不明確,因爲'referenceNumber'在'文件'表中不是唯一的。

+0

'files'和其他表之間的關係是什麼? – Maraboc

+0

還有就是如果我做一組由「referenceNumber」的「文件」表「referenceNumber」將是唯一的話,我可以加入「文件」表 – manal

回答

1

如果我明白你要做什麼,使用join()和'count'子查詢作爲第一個參數,並傳遞一個Closure作爲第二個參數指定主查詢和子查詢之間的鏈接。

$temp = DB::table('members') 
->join('members_courses_assign', 'members.externalPersonKey', '=', 'members_courses_assign.externalPersonKey') 
->join('courses', 'members_courses_assign.referenceNumber', '=', 'courses.referenceNumber') 
->join(DB::raw('(SELECT COUNT(*) AS count, referenceNumber FROM files WHERE termkey='.$termK.' GROUP BY referenceNumber) FileCount'), function($join) 
{ 
    $join->on('courses.referenceNumber', '=', 'FileCount.referenceNumber'); 
}) 
->where(['courses.termkey'=>$termK,'members_courses_assign.termkey'=>$termK]) 
->get(); 
+0

謝謝你這麼多的其他表沒有關係,這是工作! – manal