No, OP mi moc nepomohl, ale zkusím to! Předpokládám, že votes
tabulka obsahuje skutečné hlasy uživatelů pro položky. To znamená, že pokud položka nezískala žádný hlas, pak ID této položky (masterItemId
) v votes
neexistuje tabulka.
To znamená, že tabulku hlasů je třeba nechat spojenou v tabulce hlavních položek v masterItemId
pole. Zavolám hlavní tabulku položek:items
a předpokládejme, že má itemId
pole, které odpovídá masterItemId
v poli votes
stůl. V podmínkách SQL:
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
Laravel neznám, ale budete potřebovat něco takového, ale nepovažujte to za kód zkopírovat a vložit:
$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();