Mysql
 sql >> Baza danych >  >> RDS >> Mysql

COALESCE w laravel

Cóż, OP nie był zbyt pomocny, ale dam mu szansę! Zakładam, że votes tabela zawiera rzeczywiste głosy oddane przez użytkowników na elementy. Oznacza to, że jeśli przedmiot nie otrzymał żadnego głosu, to jego identyfikator (masterItemId ) nie istnieje w votes tabela.

Oznacza to, że tabela głosów musi pozostać połączona z główną tabelą elementów na masterItemId pole. Wywołam główną tabelę przedmiotów:items i załóżmy, że ma itemId pole pasujące do masterItemId pole w votes stół. W kategoriach 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

Nie znam Laravela, ale będziesz potrzebować czegoś takiego, jednak nie traktuj tego jako kodu kopiuj-wklej:

$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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. zapytanie mysqli zwraca tylko pierwszy wiersz

  2. Połącz się z bazą danych mysql przez SSH przez PHP

  3. Jak przechowywać tablicę w mysql?

  4. Jak zdobyć skrypt do tworzenia tabel w MySQL Workbench?

  5. MySQL EXPLAIN:Używanie indeksu a używanie warunku indeksu