sql >> Databasteknik >  >> RDS >> Mysql

COALESCE i laravel

Tja, OP var inte så bra, men jag ska ge det ett försök! Jag antar att votes Tabellen innehåller faktiska röster avgivna av användare på objekten. Detta betyder att om ett objekt inte fick någon röst, då är det objekt-id (masterItemId ) finns inte i votes bord.

Detta innebär att rösttabellen måste lämnas sammanfogad på huvudobjekttabellen på masterItemId fält. Jag kallar huvudobjekttabellen:items , och anta att den har ett itemId fält som matchar masterItemId fältet i votes tabell. I SQL-termer:

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

Jag är inte bekant med Laravel, men du kommer att behöva något liknande detta, men behandla det inte som kopiera-klistra kod:

$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. SQL DROP TABLE Syntax – Listad av DBMS

  2. Hur gör du Multiple Inner Joins i Linq till Entities

  3. välj från en tabell, infoga i en annan tabell oracle sql-fråga

  4. PHP-anslutningen misslyckades:SQLSTATE[HY000] [2002] Anslutningen avvisades