sql >> Database >  >> RDS >> Mysql

COALESCE in laravel

Nou, de OP was niet al te nuttig, maar ik zal het proberen! Ik neem aan dat de votes tabel bevat de daadwerkelijke stemmen die door gebruikers op de items zijn uitgebracht. Dit betekent dat als een item geen enkele stem heeft gekregen, dat item-ID (masterItemId ) bestaat niet in de votes tafel.

Dit betekent dat de stemtabel moet worden toegevoegd aan de tabel met hoofditems op de masterItemId veld. Ik noem de tabel met hoofditems:items , en neem aan dat het een itemId . heeft veld dat overeenkomt met de masterItemId veld in de votes tafel. In SQL-termen:

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

Ik ben niet bekend met Laravel, maar je hebt zoiets nodig, maar behandel het niet als code voor kopiëren en plakken:

$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. Hoe te groeperen op maand in PostgreSQL

  2. Door de gebruiker gedefinieerde MySQL-variabele in WHERE-component

  3. Een nieuwe waarde toevoegen aan een bestaand ENUM-type

  4. Hoe dubbele records te vinden met behulp van Group by and Having-clausule in SQL Server - SQL Server / TSQL-zelfstudie, deel 132