[英]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.