我有3个表(机构,工作人员,居民),我想在一个查询中获取企业的名称以及每个企业的居民和工作人员的数量。但我不知道它是否可能。
我试过了:
DB::table('etablissements')
->select(array('etablissements.nom',
DB::raw('COUNT(residents.id) as nbResidents'),
DB::raw('COUNT(personnels.id) as nbPersonnels')))
->join('residents','etablissements.id','=','residents.etablissement_id')
->join('personnels','etablissements.id','=','personnels.etablissement_id')
->groupBy('etablissements.nom')->get();
但结果并不好。你能救我吗?
我想要一个包含所有机构名称的阵列,并且每个机构都要有附属于它的员工和居民的数量。
在这里你可以看到我得到的但数字错误:https://puu.sh/tL6Jg/7d830067e1.png
没有相同名称的企业,结果与ID相同。我在SQL中使用查询获得了相同的结果,我不确定我是否以正确的方式执行此操作。 https://puu.sh/tMMFI/49bd788501.png 如果我参加第一个机构,我应该有28名居民和36名工作人员。
解决方案: 我忘了在每个COUNT之后加上DISTINCT。