Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MySQL] Sumowanie kolumny z sumami
lukas0987
post 5.07.2011, 20:16:26
Post #1





Grupa: Zarejestrowani
Postów: 64
Pomógł: 0
Dołączył: 13.04.2006

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


Witam,
Walczę już z moim problemem 4h. Jesteście moją ostatnią deską ratunku smile.gif
Sprawa wygląda tak.
Mam zapytanie:
  1. SELECT `samochody`.`samochod_id` , SUM(`czesci`.`czesci_cena`) FROM samochody, czesci WHERE ((`samochod_data_sprzedazy` BETWEEN '2011-06-01' AND '2011-06-10') AND (`czesci`.`samochod_id` = `samochody`.`samochod_id`)) GROUP BY `samochody`.`samochod_id`


wynikiem mojego zapytania jest tabela:
samochod_id SUM(`czesci`.`czesci_cena`)
12 7695.44
14 6512.00
16 4468.00
20 9370.03
35 4381.00
36 3708.00

Jak zsumować wszystkie wyniki: SUM(`czesci`.`czesci_cena`)?

Próbowałem w ten sposób:
  1. SELECT SUM(SUM(`czesci`.`czesci_cena`)) FROM (SELECT `samochody`.`samochod_id` , SUM(`czesci`.`czesci_cena`) FROM samochody, czesci WHERE ((`samochod_data_sprzedazy` BETWEEN '2011-06-01' AND '2011-06-10') AND (`czesci`.`samochod_id` = `samochody`.`samochod_id`)) GROUP BY `samochody`.`samochod_id`)

Ale krzyczy błędy. Naturalnie próbowałem jeszcze sporo innych metod.
Jednak nie mogę sobie z tym poradzić. Proszę o pomoc i z góry dziękuję.

Ten post edytował lukas0987 5.07.2011, 20:23:14
Go to the top of the page
+Quote Post
rollen
post 5.07.2011, 21:19:30
Post #2





Grupa: Zarejestrowani
Postów: 16
Pomógł: 6
Dołączył: 24.06.2011

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


Cytat(lukas0987 @ 5.07.2011, 21:16:26 ) *
  1. SELECT `samochody`.`samochod_id` , SUM(`czesci`.`czesci_cena`) FROM samochody, czesci WHERE ((`samochod_data_sprzedazy` BETWEEN '2011-06-01' AND '2011-06-10') AND (`czesci`.`samochod_id` = `samochody`.`samochod_id`)) GROUP BY `samochody`.`samochod_id`


Tu sumujesz po pojedynczych samochodach...

Jeżeli próbujesz pobrać tylko sumę wszystkich części to proponuę bez grupowania:

  1. SELECT SUM(c.czesci_cena)
  2. FROM samochody s JOIN czesci c ON c.samochod_id = s.samochod_id
  3. WHERE s.samochod_data_sprzedazy BETWEEN '2011-06-01' AND '2011-06-10'


Tu sumujesz po wszystkich samochodach...

Ale jeżeli chcesz mieć bardziej egzoyczne i mniej wydajne zapytanie w stylu tego drugiego to:

  1. SELECT SUM(tmp.suma_cen_czesci) FROM (
  2. SELECT `samochody`.`samochod_id` , SUM(`czesci`.`czesci_cena`) FROM samochody, czesci WHERE ((`samochod_data_sprzedazy` BETWEEN '2011-06-01' AND '2011-06-10') AND (`czesci`.`samochod_id` = `samochody`.`samochod_id`)) GROUP BY `samochody`.`samochod_id`) tmp


Wyniki jednak będą identyczne...







Go to the top of the page
+Quote Post
lukas0987
post 6.07.2011, 17:32:28
Post #3





Grupa: Zarejestrowani
Postów: 64
Pomógł: 0
Dołączył: 13.04.2006

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


Dokładnie o to chodziło. Wielkie dzięki za pomoc. Sam to bym chyba nie wpadł na to przez miesiąc. W ogóle w inną stronę szukałem.
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 26.04.2025 - 03:26