Tja, OP var inte så bra, men jag ska ge det ett försök! Jag antar att votes
Tabellen innehåller faktiska röster avgivna av användare på objekten. Detta betyder att om ett objekt inte fick någon röst, då är det objekt-id (masterItemId
) finns inte i votes
bord.
Detta innebär att rösttabellen måste lämnas sammanfogad på huvudobjekttabellen på masterItemId
fält. Jag kallar huvudobjekttabellen:items
, och anta att den har ett itemId
fält som matchar masterItemId
fältet i votes
tabell. I SQL-termer:
select items.itemId, ifnull(sum(votes.votes),0) as votesSum
from items left join votes on items.itemId=votes.masterItemId
where votes.voteDate between ... and ... and <other conditions>
group by items.itemId
Jag är inte bekant med Laravel, men du kommer att behöva något liknande detta, men behandla det inte som kopiera-klistra kod:
$multipleitems = DB::table('items')
->leftJoin('votes','items.itemId','=','votes.masterItemId')
->select('items.itemId',DB::raw('ifnull(sum(votes.votes),0) as voteSum'))
->whereBetween('votes.voteDate',array($startDate,$endDate))
->where($condition)
->groupBy('items.temId')
->get();