我有这个查询:
public static function totalByAgent(int $agentId)
{
return PropertyListing::select(
DB::raw('SUM(property_listing.rental) as rental'),
DB::raw('SUM(property_listing.sale) as sale'),
'property_category.name as category_name',
'property_category.id as category_id'
)->join(
'property_category',
'property_category.id',
'property_listing.category_id'
)->where('agent_id', $agentId)->groupBy('property_category.id')->get();
}
通过此查询,我可以按物业类别获取要出售的物业总和和要出租的物业总和。但是,如果某些物业仅具有待售物业,而要出租的房屋为0,则我获得的租金总额为0。
我尝试添加:
->having('sale', '>', 0)->get()
在groupBy之后。如果有的话,这会掩盖租金。
有什么主意吗?
最诚挚的问候
答案 0 :(得分:0)
最后,该查询对我有用:
return Property::published()->select(DB::raw('SUM(property.rental) as rental'),
DB::raw('SUM(property.sale) as sale'),
'property_category.name as category_name',
'property_category.id as category_id')
->join('property_category', 'property_category.id', 'property.category_id')
->whereExists(function ($query) use ($agentId){
$query->select('property_listing.agent_id')
->from('property_listing')
->whereRaw('property.id = property_listing.property_id')
->where('property_listing.agent_id', $agentId);
})->published()
->groupBy('property_category.id')->get();