Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

COALESCE di laravel

Yah, OP tidak terlalu membantu, tapi saya akan mencobanya! Saya berasumsi, bahwa votes tabel berisi suara aktual yang diberikan oleh pengguna pada item. Artinya, jika suatu item tidak menerima suara apa pun, maka id item tersebut (masterItemId ) tidak ada di votes tabel.

Ini berarti tabel suara harus dibiarkan bergabung dengan tabel item utama di masterItemId bidang. Saya akan memanggil tabel item utama:items , dan anggap memiliki itemId bidang yang cocok dengan masterItemId bidang di votes meja. Dalam istilah 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

Saya tidak terbiasa dengan Laravel, tetapi Anda akan membutuhkan sesuatu seperti ini, namun jangan memperlakukannya sebagai kode salin-tempel:

$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. Dalam gabungan, cara mengawali semua nama kolom dengan tabel asalnya

  2. Python/MySQL - LOAD DATA INFILE LOKAL

  3. Pernyataan pembaruan Python MYSQL

  4. Perbedaan MySQL dan SQLite dalam SQL

  5. Query Mysql GROUP by dan ORDER by