sql >> Databáze >  >> RDS >> Mysql

Použití spojení se seskupenými datovými řádky

Problém je v tom, že když použijete GROUP BY , můžete pouze SELECT agregáty a sloupce, na kterých jste seskupili.

invoices.id je sloupec, který jste se pokusili vybrat, ale neseskupili. Myslím, že pravděpodobně budete chtít přidat tento sloupec do GROUP BY doložka.

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

U příkladů tabulek, které jste uvedli, to pravděpodobně bude:

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 obecně budete mít něco jako:

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

Kde vidíte výše, u faktury 1 bylo 150 zaplaceno v hotovosti a 300 bylo zaplaceno kartou.




  1. Mapa JPA Typ json MySQL, má zkomolený řetězec

  2. cx oracle ImportError

  3. Časové razítko PHP/MySQL bude vypadat atraktivněji

  4. Rozhodněte se mezi monitorováním na základě agenta a monitorováním bez agenta