sql >> Database teknologi >  >> RDS >> Mysql

COALESCE i laravel

Nå, OP var ikke alt for nyttigt, men jeg vil give det et skud! Jeg antager, at votes tabel indeholder faktiske stemmer afgivet af brugere på emnerne. Dette betyder, at hvis en vare ikke modtog nogen stemme, så vare-id'et (masterItemId ) findes ikke i votes tabel.

Dette betyder, at stemmetabellen skal efterlades samlet på hovedposttabellen på masterItemId Mark. Jeg kalder hovedelementtabellen:items , og antag, at den har et itemId felt, der matcher masterItemId feltet i votes bord. 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

Jeg er ikke bekendt med Laravel, men du får brug for noget som dette, men det skal ikke behandles som copy-paste kode:

$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. Hvordan kontrollerer man, om en variabel er NULL, og sætter den derefter med en MySQL-lagret procedure?

  2. MySQL LOAD DATA INFILE:virker, men uforudsigelig linjeterminator

  3. MySQL Opret tabel som SELECT

  4. Sådan opsætter du Oracle EBS Auditing