簡體   English   中英

MYSQL QUERY多個表計數

[英]MYSQL QUERY multiple tables count

我在建立一個查詢時遇到問題,該查詢按該國一個特定地區(省)的法律分支來划分律師人數。

我有四個表,一個表帶有分支機構,一個用於用戶,一個在其中律師在執業法所在的分支機構中添加,另一個用於地區。

我可以使用以下查詢來總結所有這些信息:

 $lawyersbyprovince = DB::table('branchlawsubareas')
 ->leftJoin('lawyerbranches', function($join) {
     $join->on( 'branchlawsubareas.id', '=', 'lawyerbranches.subarea_id');
 })
 ->leftJoin('users', function($join) {
     $join->on( 'lawyerbranches.user_id', '=', 'users.id');
 })
 ->leftJoin('states', function($join) {
     $join->on('users.working_province', '=', 'states.id_state');
 })
 ->leftJoin('branchlaws', 'branchlawsubareas.area_id', '=', 'branchlaws.id')
 ->select('branchlawsubareas.name as subarea',
     DB::raw('count(lawyerbranches.subarea_id) as total'),
     'branchlawsubareas.id' 
 )
 ->where('states.id_state','=', $province)
 ->groupBy('branchlawsubareas.id')
 ->get();

該查詢返回每個法律部門的律師人數,但不按省界定。 我已經花了很多時間嘗試一些事情,但是顯然我錯過了一些東西。

任何幫助都感激不盡。

盡量不要加入leftjoin的狀態。

$lawyersbyprovince = DB::table('branchlawsubareas')
->leftJoin('lawyerbranches', 'branchlawsubareas.id', '=', 'lawyerbranches.subarea_id')
->leftJoin('users', 'lawyerbranches.user_id', '=', 'users.id')
->leftJoin('branchlaws', 'branchlawsubareas.area_id', '=', 'branchlaws.id')
->join('states', 'users.working_province', '=', 'states.id_state')
->where('states.id_state','=', $province)
->select('branchlawsubareas.name as subarea',
    DB::raw('count(lawyerbranches.subarea_id) as total'),
   'branchlawsubareas.id' 
)
->groupBy('branchlawsubareas.id')
->get();

現在,如果這不起作用,您還有另一種方法。 刪除where()子句並像這樣更改您的選擇

...
->select(''branchlawsubareas.id', 'states.id as state_id')
...

這將返回包含所有數據的集合。 然后您可以像這樣操作該集合

$newCollection = $resultFromQuery->where('state_id', $province);
$newCollection->count(); //number of laywer in that state

希望對您有所幫助,或者只是給您一個提示。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM