Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

COALESCE em laravel


Bem, o OP não foi muito útil, mas vou tentar! Presumo que os votes tabela contém votos reais dos usuários sobre os itens. Isso significa que, se um item não recebeu nenhum voto, então o id do item (masterItemId ) não existe nos votes tabela.

Isso significa que a tabela de votos deve ser deixada unida na tabela de itens principais no masterItemId campo. Vou chamar a tabela de itens principais:items , e suponha que ele tenha um itemId campo que corresponde ao masterItemId campo no votes tabela. Em termos de 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

Não estou familiarizado com o Laravel, mas você vai precisar de algo assim, porém não trate é como copiar e colar o código:
$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();