Nun, das OP war nicht allzu hilfreich, aber ich werde es versuchen! Ich gehe davon aus, dass der votes
Tabelle enthält tatsächliche Stimmen, die von Benutzern zu den Elementen abgegeben wurden. Das bedeutet, wenn ein Artikel keine Bewertung erhalten hat, dann wird diese Artikel-ID (masterItemId
) existiert nicht in den votes
Tabelle.
Das bedeutet, dass die Abstimmungstabelle auf der Hauptartikeltabelle auf der masterItemId
verbunden bleiben muss Feld. Ich nenne die Hauptartikeltabelle:items
, und nehmen Sie an, dass es eine itemId
hat Feld, das mit masterItemId
übereinstimmt Feld in den votes
Tisch. In SQL-Begriffen:
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
Ich bin mit Laravel nicht vertraut, aber Sie werden so etwas brauchen, aber behandeln Sie es nicht als Copy-Paste-Code:
$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();