Е, ОП не беше много полезна, но ще пробвам! Предполагам, че votes
таблицата съдържа действителните гласове, подадени от потребителите за елементите. Това означава, че ако даден елемент не е получил никакъв глас, тогава този идентификатор (masterItemId
) не съществува в votes
таблица.
Това означава, че таблицата с гласовете трябва да бъде оставена свързана в таблицата с основни елементи на masterItemId
поле. Ще извикам основната таблица с артикули:items
и приемете, че има itemId
поле, което съответства на masterItemId
полето в votes
маса. В 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, но ще ви трябва нещо подобно, но не го третирайте като copy-paste код:
$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();