2016-06-22 3 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

はそんなにありがとう私のために出力、これは素晴らしいアイデアです。しかし、クエリビルダでSUM結果を表示できます –

関連する問題