sql >> Base de Datos >  >> RDS >> Mysql

COALESCE en laravel

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();