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

Permintaan fasih Laravel

Ini bukan jawaban yang lengkap tapi sudah dekat. Tidak peduli bagaimana saya mengerjakan data, saya tidak tahu bagaimana Anda menghasilkan cash_has . Saya juga menyimpannya sebagai SQL mentah karena saya merasa itu akan lebih membantu dan seharusnya tidak sulit untuk dikonversi kembali ke pembuat kueri. Saya juga tidak tahu nama kolom yang tepat sehingga Anda mungkin harus memperbaiki beberapa di antaranya.

SELECT
    COALESCE(outlets_admin.name, outlets.name) AS outlet, 
    COALESCE(boys_admin.name, boys.name) AS delivery_boy,
    SUM(IF(cm.source_type = 'admin', amount, 0)) AS cash_taken,
    SUM(IF(cm.source_type = 'deliveryBoy', amount, 0)) AS cash_returned,
    SUM(IF(cm.source_type = 'admin', amount, 0)) - SUM(IF(cm.source_type = 'deliveryBoy', amount, 0)) AS cash_has
FROM delivery_cash_manages cm
LEFT JOIN outlets ON outlets.id = cm.destination_id AND cm.source_type = 'deliveryBoy'
LEFT JOIN delivery_boys boys ON boys.id = cm.source_id AND cm.source_type = 'deliveryBoy'
LEFT JOIN outlets outlets_admin ON outlets_admin.id = cm.source_id AND cm.source_type = 'admin'
LEFT JOIN delivery_boys boys_admin ON boys_admin.id = cm.destination_id AND cm.source_type = 'admin'
WHERE COALESCE(outlets.id, outlets_admin.id) = '2'  #  This is where you plug in your $outlet_id
GROUP BY outlet, delivery_boy

Alasan Anda mendapatkan kesalahan dengan kueri Anda adalah jika Anda mengelompokkan berdasarkan apa pun, Anda perlu mengelompokkan menurut semua yang Anda pilih yang bukan kolom agregat (fungsi seperti jumlah, maks, rata-rata).




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Kondisi Balapan dengan mysql_last_id()

  2. Menggunakan MySQLi dari kelas lain di PHP

  3. Laravel 5.6 withCount dan pernyataan where

  4. Penambahan SUM dari dua tabel independen

  5. Tabel ditentukan dua kali, baik sebagai target untuk 'UPDATE' dan sebagai sumber terpisah untuk data di mysql