Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Sumowanie rekordów...
tomik2
post
Post #1





Grupa: Zarejestrowani
Postów: 2
Pomógł: 0
Dołączył: 4.11.2004

Ostrzeżenie: (0%)
-----


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
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 5)
spenalzo
post
Post #2





Grupa: Zarejestrowani
Postów: 2 064
Pomógł: 1
Dołączył: 22.01.2003
Skąd: Poznań

Ostrzeżenie: (0%)
-----


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
Go to the top of the page
+Quote Post
wolan
post
Post #3





Grupa: Zarejestrowani
Postów: 12
Pomógł: 0
Dołączył: 28.10.2004

Ostrzeżenie: (0%)
-----


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
Go to the top of the page
+Quote Post
kszychu
post
Post #4





Grupa: Przyjaciele php.pl
Postów: 2 712
Pomógł: 23
Dołączył: 27.10.2003
Skąd: z kontowni

Ostrzeżenie: (0%)
-----


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
Go to the top of the page
+Quote Post
spenalzo
post
Post #5





Grupa: Zarejestrowani
Postów: 2 064
Pomógł: 1
Dołączył: 22.01.2003
Skąd: Poznań

Ostrzeżenie: (0%)
-----


Faktycznie, byłem zmeczony i źle napisałem....
Go to the top of the page
+Quote Post
tomik2
post
Post #6





Grupa: Zarejestrowani
Postów: 2
Pomógł: 0
Dołączył: 4.11.2004

Ostrzeżenie: (0%)
-----


dzieki wielkie (IMG:http://forum.php.pl/style_emoticons/default/biggrin.gif)
prawdziwi z was fachowcy
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 23.08.2025 - 16:56