我正在做一个左联接,我想从一个表中获取数据以及另一个表的ID出现次数,我有一个表:
'tab_areas_atuacoes'
这是专业的专业,我有桌子
'tab_medicos_as_area_atuacao'
是具有每个专业人员的所有专业的表,其中每个专业人员可以具有多个专业。
我想从'tab_areas_atuacoes'
获取数据,我想获取每个专业人员拥有的专业数量,但是我没有得到结果。有人可以给我一些想法吗?到目前为止,我有这个:
DB::table('tab_areas_atuacoes')
->whereNull('deleted_at')
->leftJoin('tab_medicos_as_areas_de_atuacao', function($query){
$query->on('tab_medicos_as_areas_de_atuacao.rel_area_atuacao_id', 'tab_areas_atuacoes.esp_id');
$query->selectRaw('tab_medicos_as_areas_de_atuacao.*, count(tab_medicos_as_areas_de_atuacao.rel_area_atuacao_id) as total');
})->select('esp_id', 'esp_data', 'esp_titulo', 'esp_status', 'deleted_at')->groupBy('tab_areas_atuacoes.esp_id');
提前感谢您的帮助!
答案 0 :(得分:0)
恐怕我不太了解结构,因此这里涉及一些猜测。您在联接中有一个选择,我不确定您是否实际上是在尝试将所有这些列添加到结果集中。您可以将所需的所有列添加到初始选择中,也可以稍后通过addSelect()
调用添加其他列。
DB::table('tab_areas_atuacoes')
->select(
'esp_id',
'esp_data',
'esp_titulo',
'esp_status',
'deleted_at',
DB::raw(
'COUNT(tab_medicos_as_areas_de_atuacao.rel_area_atuacao_id) AS total'
)
)->leftJoin(
'tab_medicos_as_areas_de_atuacao',
'tab_medicos_as_areas_de_atuacao.rel_area_atuacao_id',
'=',
'tab_areas_atuacoes.esp_id'
)->whereNull('deleted_at')
->groupBy('tab_areas_atuacoes.esp_id'));