Yah, OP tidak terlalu membantu, tapi saya akan mencobanya! Saya berasumsi, bahwa votes
tabel berisi suara aktual yang diberikan oleh pengguna pada item. Artinya, jika suatu item tidak menerima suara apa pun, maka id item tersebut (masterItemId
) tidak ada di votes
tabel.
Ini berarti tabel suara harus dibiarkan bergabung dengan tabel item utama di masterItemId
bidang. Saya akan memanggil tabel item utama:items
, dan anggap memiliki itemId
bidang yang cocok dengan masterItemId
bidang di votes
meja. Dalam istilah 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
Saya tidak terbiasa dengan Laravel, tetapi Anda akan membutuhkan sesuatu seperti ini, namun jangan memperlakukannya sebagai kode salin-tempel:
$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();