Eh bien, l'OP n'a pas été trop utile, mais je vais tenter le coup ! Je suppose que les votes
table contient les votes réels exprimés par les utilisateurs sur les éléments. Cela signifie que si un élément n'a reçu aucun vote, alors cet identifiant d'élément (masterItemId
) n'existe pas dans les votes
tableau.
Cela signifie que la table des votes doit être laissée jointe sur la table des éléments principaux sur le masterItemId
domaine. J'appellerai la table des éléments principaux :items
, et supposons qu'il a un itemId
champ qui correspond à masterItemId
dans le champ votes
table. En termes 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
Je ne connais pas Laravel, mais vous aurez besoin de quelque chose comme ça, mais ne le traitez pas comme du code copier-coller :
$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();