Bueno, el OP no fue muy útil, ¡pero lo intentaré! Supongo que los votes
La tabla contiene los votos reales emitidos por los usuarios sobre los elementos. Esto significa que si un artículo no recibió ningún voto, entonces ese id del artículo (masterItemId
) no existe en los votes
mesa.
Esto significa que la tabla de votos debe quedar unida a la tabla de elementos principales en el masterItemId
campo. Llamaré a la tabla de artículos principales:items
y supongamos que tiene un itemId
campo que coincide con el masterItemId
campo en los votes
mesa. En términos 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
No estoy familiarizado con Laravel, pero necesitará algo como esto, sin embargo, no lo trate como un código de copiar y pegar:
$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();