Nou, de OP was niet al te nuttig, maar ik zal het proberen! Ik neem aan dat de votes
tabel bevat de daadwerkelijke stemmen die door gebruikers op de items zijn uitgebracht. Dit betekent dat als een item geen enkele stem heeft gekregen, dat item-ID (masterItemId
) bestaat niet in de votes
tafel.
Dit betekent dat de stemtabel moet worden toegevoegd aan de tabel met hoofditems op de masterItemId
veld. Ik noem de tabel met hoofditems:items
, en neem aan dat het een itemId
. heeft veld dat overeenkomt met de masterItemId
veld in de votes
tafel. In SQL-termen:
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
Ik ben niet bekend met Laravel, maar je hebt zoiets nodig, maar behandel het niet als code voor kopiëren en plakken:
$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();