Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Sumowanie rekordów...
Forum PHP.pl > Forum > Bazy danych > MySQL
tomik2
Mam takie tabele:

Kod
KONTRACHENCI

| kontrachent_id | kontrachent |
--------------------------------
|        1       | Arek        |
|        2       | Tomek       |
|        3       | Czarek      |
|        4       | Marek       |
|        5       | Ania        |
|        6       | Wojtek      |


RACHUNKI
|   rachunek_id  | kontrachent_id | kwota
---------------------------------------------------
|        1       |      1         |  540
|        2       |      2         |  200
|        3       |      1         |  150
|        4       |      4         |  200
|        5       |      4         |  140
|        6       |      5         |  110
|        7       |      5         |  520
|        8       |      4         |  120
|        9       |      4         |  412


chcę uzyskać:

Kod
| kontrachent    | suma kwot   |
--------------------------------
|    Marek       |     872     |
|    Arek        |     690     |
|    Ania        |     630     |
|    Tomek       |     200     |
|    Czarek      |       0     |
|    Wojtek      |       0     |


Wiem że można to uzyskać robiąc podzapytania w czasie while'a ale taki skrypt wykonuje się baaaardzo długo. Zastanawiam się czy nie dałoby się tego załatwić JEDNYM zapytaniem
spenalzo
Po 1. to pisze sie kontrahent.

Zapytanie:
  1. SELECT k.kontrachent, SUM(r.kwota) AS kwota FROM rachunki r LEFT JOIN kontrachenci k ON (k.kontrachent_id=r.kontrachent_id) GROUP BY k.kontrachent_id
wolan
witaj,

a nie powinno byc kapke inaczej?

  1. SELECT k.kontrachent AS kontrachent, SUM(r.kwota) AS kwota FROM rachunki r LEFT JOIN kontrachenci k ON (k.kontrachent_id=r.kontrachent_id) GROUP BY k.kontrachent ORDER BY kwota DESC;


pozdrawiam,
wolan
kszychu
A ja to bym raczej dokleił rachunki do kontrahentów a nie na odwrót; raczej nie potrzebujemy informacji o rachunkach "bez kontrahentów", a zdarzyć się może kontrahent bez rachunków, czyli:
  1. SELECT k.kontrachent, SUM(r.kwota) AS kwota FROM kontrachenci k LEFT JOIN rachunki r ON (k.kontrachent_id=r.kontrachent_id) GROUP BY k.kontrachent_id
spenalzo
Faktycznie, byłem zmeczony i źle napisałem....
tomik2
dzieki wielkie biggrin.gif
prawdziwi z was fachowcy
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.