Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL][PHP]Różnica sum dwóch kolumn, zapytanie MySQL zwracające wynik odejmowania sum dwóch kolumn
Therminus
post
Post #1





Grupa: Zarejestrowani
Postów: 52
Pomógł: 0
Dołączył: 24.05.2015

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


Mam w PHP tabelę w której ma się wyświetlić różnica sum dwóch kolumn z tej samej tabeli bazy MySQL.
Był już podobny temat na tym forum, ale tam chodziło o różnicę sum dwóch kolumn z różnych tabel. Niestety, nie mogę sobie z tym poradzić aby dopasować to do swojego przypadku.
A zapytania które sumują mam takie:
  1. $suma_br_210_1 = "SELECT SUM(Pow_Uzyt) as sum_br_210_1 FROM `broniewskiego_2-10` WHERE `Kategoria` LIKE 'M'";
  2. $suma_br_210_6 = "SELECT SUM(Pow_Uzyt_IF) as sum_br_210_6 FROM `broniewskiego_2-10` WHERE `Kategoria` LIKE 'M'";


Te sumy wyświetlają mi się prawidłowo. Teraz chodzi o to, aby stworzyć takie zapytanie MySQL którego wynikiem będzie różnica tych dwóch sum.

Ten post edytował Therminus 1.07.2015, 22:19:13
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 8)
nospor
post
Post #2





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




A nie mozesz w php odjac od siebie tych dwoch wartosci? Od tak poprostu...

Jesli nie mozesz bo cos tam, to..:
SELECT SUM(Pow_Uzyt) - SUM(Pow_Uzyt_IF) FROM `broniewskiego_2-10` WHERE `Kategoria` LIKE 'M'


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
mmmmmmm
post
Post #3





Grupa: Zarejestrowani
Postów: 1 421
Pomógł: 310
Dołączył: 18.04.2012

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


  1. SELECT Coalesce(SUM(Pow_Uzyt),0) - Coalesce(SUM(Pow_Uzyt_IF),0) FROM `broniewskiego_2-10` WHERE `Kategoria` = 'M'
Go to the top of the page
+Quote Post
Therminus
post
Post #4





Grupa: Zarejestrowani
Postów: 52
Pomógł: 0
Dołączył: 24.05.2015

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


Cytat(nospor @ 1.07.2015, 23:22:48 ) *
A nie mozesz w php odjac od siebie tych dwoch wartosci? Od tak poprostu...


Może i mogę, ale tego nie wiem (przedszkole wszak).
Ta tabelka, którą generuję kodem PHP jest dość skomplikowana. Może dlatego, że niepotrzebnie ją pokomplikowałem? smile.gif
Każdy wiersz to:
1. kilka kolumn wyciągnięte z tabeli MySQL `dzialki`
2. następne kolumny to obliczenia z sum zawartości innej tabeli, różnej dla każdego wiersza. A tych tabel jest około setki(!).

Cytat(nospor)
Jesli nie mozesz bo cos tam, to..:
SELECT SUM(Pow_Uzyt) - SUM(Pow_Uzyt_IF) FROM `broniewskiego_2-10` WHERE `Kategoria` LIKE 'M'

No tak, to było proste do bólu. Ale dlaczego na to nie wpadłem? Bo kombinowałem inaczej. Przykład który podałem okazał się być nieszczęśliwie zbyt prosty. Otóż "WHERE `Kategoria` LIKE 'coś-tam'" w innych przypadkach będzie różne dla poszczególnych składników sumy, czy różnicy.
Na przykład cos takiego jak poniżej. To oczywiście nie działa, ale może jakoś przystepnie zilustruje o co mi chodzi.

CODE
  1. SELECT SUM((Pow_Uzyt_IF) WHERE `Kategoria` LIKE 'M' + SUM(Pow_Uzyt_IF) WHERE `Kategoria` LIKE 'LU%' + SUM(Pow_Przynal_IF)) / (SUM(Pow_Uzyt) WHERE `Kategoria` LIKE 'M'" + SUM(Pow_przynal_zalicz) + SUM(Pow_Uzyt) WHERE `Kategoria` LIKE 'LU%') FROM `broniewskiego_65-81`;


A jeśli ktoś chciałby ogarnąć przynajmniej fragment większej całości, to mogę zapodać gotowca do wyświetlenia w przeglądarce i jakiś dump z części bazy. Przy okazji okaże się jak nie należy pisać w php i tworzyć tabel w bazie. tongue.gif
Go to the top of the page
+Quote Post
nospor
post
Post #5





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Cytat
Może i mogę, ale tego nie wiem (przedszkole wszak).
Ta tabelka, którą generuję kodem PHP jest dość skomplikowana. Może dlatego, że niepotrzebnie ją pokomplikowałem?

Skoro masz dwie wartosci, ktore wyswietlasz na ekran w php, to i bez zadnego problemu mozesz te dwie wartosci od siebie odjac a wynik wyswietlic na ekran.

Skoro masz:
echo $w1;
echo $w2;

to rownie dobrze mozesz zrobic
echo ($w1 - $w2);

Gdzie tu magia?


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
mmmmmmm
post
Post #6





Grupa: Zarejestrowani
Postów: 1 421
Pomógł: 310
Dołączył: 18.04.2012

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


  1. SELECT
  2. (
  3. Coalesce(SUM(case when `Kategoria` LIKE 'M' then `Pow_Uzyt_IF` end),0)
  4. +
  5. Coalesce(SUM(case when `Kategoria` LIKE 'LU%' then `Pow_Uzyt_IF` end),0)
  6. +
  7. Coalesce(SUM(Pow_Przynal_IF),0)
  8. )
  9. /
  10. (
  11. Coalesce(SUM(case when `Kategoria` LIKE 'M' then `Pow_Uzyt` end),0)
  12. +
  13. Coalesce(SUM(Pow_przynal_zalicz),0)
  14. +
  15. Coalesce(SUM(case when `Kategoria` LIKE 'LU%' then `Pow_Uzyt` end),0)
  16. )
  17. FROM `broniewskiego_65-81`;


Ten post edytował mmmmmmm 2.07.2015, 13:49:00
Go to the top of the page
+Quote Post
Therminus
post
Post #7





Grupa: Zarejestrowani
Postów: 52
Pomógł: 0
Dołączył: 24.05.2015

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


Cytat(mmmmmmm @ 2.07.2015, 14:47:41 ) *

A, to tędy droga. Muszę poczytać o tym "Coalesce".
Dzięki bardzo.

Cytat(nospor @ 2.07.2015, 13:57:46 ) *

Skoro masz:
echo $w1;
echo $w2;

to rownie dobrze mozesz zrobic
echo ($w1 - $w2);

Gdzie tu magia?

Próbowałem tej sztuki, ale jakoś mi nie wychodziło. Chyba to, że to wyrażenie umieszcza się pomiędzy znacznikami <td></td> nie ma znaczenia?

Ten post edytował Therminus 2.07.2015, 15:10:02
Go to the top of the page
+Quote Post
mmmmmmm
post
Post #8





Grupa: Zarejestrowani
Postów: 1 421
Pomógł: 310
Dołączył: 18.04.2012

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


To nie o Coalesce cvhodzi, tylko o CASE WHEN...
Coalesce podaje tylko pierwszą nie-Nullową wartość. Dla SUM taka może się zdarzyć...
Go to the top of the page
+Quote Post
nospor
post
Post #9





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Cytat
Chyba to, że to wyrażenie umieszcza się pomiędzy znacznikami <td></td> nie ma znaczenia?
Nie, nie ma znaczenia... ja ci tylko podalem przyklad. Logiczne, ze u CIebie to wyglada inaczej. Przeciez ja nie wiem jak to wyglada u CIebie. Nie pokazales kodu.


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

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 Aktualny czas: 20.08.2025 - 11:58