sql >> Databáze >  >> RDS >> Mysql

COALESCE v laravel

No, OP mi moc nepomohl, ale zkusím to! Předpokládám, že votes tabulka obsahuje skutečné hlasy uživatelů pro položky. To znamená, že pokud položka nezískala žádný hlas, pak ID této položky (masterItemId ) v votes neexistuje tabulka.

To znamená, že tabulku hlasů je třeba nechat spojenou v tabulce hlavních položek v masterItemId pole. Zavolám hlavní tabulku položek:items a předpokládejme, že má itemId pole, které odpovídá masterItemId v poli votes stůl. V podmínkách 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 neznám, ale budete potřebovat něco takového, ale nepovažujte to za kód zkopírovat a vložit:

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



  1. Šipka notace

  2. Odstranění duplikátů z velké tabulky

  3. Co je Query Outlier a jak jej opravit

  4. Funkce Postgres vrací tabulku, která nevrací data ve sloupcích