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

Używanie złączenia z pogrupowanymi wierszami danych

Problem polega na tym, że gdy używasz GROUP BY , możesz tylko SELECT agregaty i kolumny, które zostały zgrupowane.

invoices.id to kolumna, którą próbowałeś wybrać, ale nie pogrupowałeś. Myślę, że prawdopodobnie chcesz dodać tę kolumnę do GROUP BY klauzula.

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

Przykładowe tabele, które podałeś, prawdopodobnie dadzą:

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

Ale generalnie będziesz mieć coś takiego:

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

Jak widać powyżej, dla faktury 1, 150 zostało zapłaconych gotówką, a 300 zapłacono kartą.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Czy Django podwójnie koduje ciąg znaków Unicode (utf-8?)?

  2. znajdź liczbę wierszy w zwróconym wyniku mysql (nodejs)

  3. Optymalizacja zapytań SQL - czas wykonania

  4. Python:MySQL:Obsługa limitów czasu

  5. JSON Wstaw do tabeli MySQL lub zaktualizuj, jeśli istnieje