2016-06-22 41 views
1

我的代碼Laravel 5.1:查詢生成器中選擇多張桌子和SUM結果

DB::table('users_tb')->leftjoin('device_tb', 'device_tb.user_id', '=', 'users_tb.user_id') 
->leftjoin('part_tb', 'device_tb.device_id', '=', 'part_tb.device_id') 
->select('users_tb.user_name', DB::raw("(SELECT COUNT(part_tb.id) FROM part_tb) AS counter")) 
->where('users_tb.level', '>', 7) 
->havingRaw("(SELECT COUNT(part_tb.id) FROM part_tb) > 0") 
->groupBy('device_tb.device_id') 
->orderBy('users_tb.user_name') 
->get()->toArray(); 

我的結果:

Name1 - 3 
Name1 - 4 
Name1 - 3 
Name2 - 11 
Name2 - 2 

我怎麼能和計數器? (使用查詢生成器/ SQL查詢)示例:

Name1 - 10 (3+4+3) 
Name2 - 13 (11 + 2) 

有人幫助我,請!

回答

0

我已經創建了一個自定義數組,我認爲你的查詢數組是相同的。您可以編寫代碼流暢的方式。

$arrs['Name1'] = array(
    3,4,3 
); 
$arrs['Name2'] = array(
    11,2 
); 

$count_status = array(); 
foreach($arrs as $index=>$arr){ 
    $sum = 0; 
    foreach($arr as $key=>$arrss){  
     isset($arrs[$index]) ? $count_status[$index] = $sum+=$arrss : $sum = 0; 
    } 
    $allVal[$index] = implode('+',$arr); 
} 
foreach($count_status as $stKey=>$eachCount){ 
    echo $stKey.' - '.$eachCount.' ('.$allVal[$stKey].') <br>'; 
} 

輸出爲我

//Name1 - 10 (3+4+3) 
//Name2 - 13 (11+2) 
+0

謝謝你這麼多,這是很好的想法。但是,您可以使用查詢生成器來彙總結果 –