Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Sử dụng kết hợp với các dòng dữ liệu được nhóm

Vấn đề là khi bạn sử dụng GROUP BY , bạn chỉ có thể SELECT tổng hợp và các cột bạn đã nhóm.

invoices.id là một cột bạn đã cố gắng chọn, nhưng không nhóm. Tôi nghĩ rằng bạn có thể muốn thêm cột này vào GROUP BY mệnh đề.

SELECT 
   invoices.id, 
   sum(grossTotal)-IFNULL(depositsCheck.previouslyPaid,0) as todayTotal, 
   depositsCheck.previouslyPaid, sum(grossTotal) as grossTotal  
FROM `invoices`    
    LEFT JOIN (SELECT SUM(amount) as previouslyPaid, invNo 
    FROM deposits 
    GROUP BY invNo) depositsCheck ON depositsCheck.invNo=invoices.id 
GROUP BY  invoices.paymentType, invoices.id ORDER BY id DESC

Đối với các bảng ví dụ bạn đã đưa ra, nó có thể sẽ cung cấp:

id    |    paymentType     |     grossTotal   |    dateTime   |   previouslyPaid
1     |         Cash       |        1000      |   UNIX TIME   |       150
2     |         Card       |        1350      |   UNIX TIME   |       350
3     |         Card       |        1250      |   UNIX TIME   |         0
4     |         Card       |        750       |   UNIX TIME   |         0

Nhưng nói chung, bạn sẽ có một cái gì đó như:

id    |    paymentType     |     grossTotal   |    dateTime   |   previouslyPaid
1     |         Cash       |        1000      |   UNIX TIME   |       150
1     |         Card       |        1000      |   UNIX TIME   |       300
2     |         Cash       |        1350      |   UNIX TIME   |       350
2     |         Card       |        1350      |   UNIX TIME   |       350

Nơi bạn có thể thấy ở trên, đối với hóa đơn 1, 150 được thanh toán bằng tiền mặt và 300 được thanh toán bằng thẻ.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL dual master

  2. Người dùng 'Người dùng' @ '%' và 'Người dùng' @ 'localhost' có giống nhau không?

  3. MySQL - Trừ giá trị từ hàng trước, nhóm theo

  4. Nhận ngày ngay cả khi nó không tồn tại trong bảng từ câu lệnh SQL SELECT

  5. XÓA tất cả nơi ràng buộc khóa ngoại MySQL không bị lỗi