我的 mySQL 有一个这样的查询
select p.tgl_pesan, COALESCE(SUM(dp.jumlah), 0) as jumlah
FROM pemesanan p
LEFT JOIN detail_pemesanan dp ON p.id_pemesanan = dp.id_pemesanan
WHERE p.tgl_pesan >= DATE_ADD(NOW(), INTERVAL -6 day)
GROUP BY p.tgl_pesan
我尝试将该查询应用到我的 Laravel 项目中,如下所示
$data = DB::table('detail_pemesanan')
->leftJoin('pemesanan', 'detail_pemesanan.id_pemesanan', '=', 'pemesanan.id_pemesanan')
->select('pemesanan.tgl_pesan as tgl_pesan', DB::raw('SUM(detail_pemesanan.jumlah) as jumlah'))
->where('tgl_pesan', '>=', 'DATE_ADD(NOW(), INTERVAL -6 DAY)')
->groupBy('pemesanan.tgl_pesan')
->get();
但这两者都显示出不同的结果。我的 Laravel 项目的结果显示了意外的数据,就像 mySQL 一样,它显示了我的时间间隔中的更多数据。我对 Laravel 项目的查询有什么问题吗?非常感谢
最佳答案
你的sql查询将是:
$data = DB::table('pemesanan as p')
->select('p.tgl_pesan', DB::raw('SUM(dp.jumlah) as jumlah'))
->leftJoin('detail_pemesanan as dp', 'p.id_pemesanan', '=',
'dp.id_pemesanan')
->whereRaw('p.tgl_pesan >= DATE_ADD(NOW(), INTERVAL -6 DAY)')
->groupBy('p.tgl_pesan')
->get();
关于mysql - Laravel 5.3 上的左连接查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44013615/