Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]sumowanie liczb
Forum PHP.pl > Forum > Przedszkole
BuncolPL
Cześć,

Mam taki głupi problem smile.gif Chodzi o sumowanie liczb.

W bazie mam tabelę xxx , w niej kolumny id i liczba. Chciałbym zsumować np. liczby z id 1,3 i 5.

Kombinowałem z select sum, ale wtedy sumuje mi całość a nie tylko liczby z tych id.

Dodam, że liczby są zmiennoprzecinkowe i mają typ float.

Pomoże ktoś smile.gif

Z góry dzięki.

Pozdrawiam
Buncol
Piogola
  1. SELECT sum(liczba), id FROM tabela WHERE id IN(1,3,5) GROUP BY id
morbic
  1. SELECT SUM(liczba) AS suma FROM xxx WHERE id IN(1,3,5)



Cytat(Piogola @ 2.07.2011, 19:39:59 ) *
  1. SELECT sum(liczba), id FROM tabela GROUP BY id WHERE id IN(1,3,5)


Z GROUP BY nie zsumuje ich poprawnie zakładając, że id jest unikatowe. I GROUP BY leci po WHERE
BuncolPL
Dzięki za info smile.gif

A jest jakiś inny sposób ? Bo id tych liczby wyciągam while z innej tabeli w bazie danych, a tutaj jest to na sztywno wpisane.
morbic
Najefektywniej złożyć to wszystko w jedno zapytanie, ale nie mam konkretnych danych, więc nie jestem w stanie pomóc.

Ale jeśli chcesz koniecznie dwoma zapytaniami i w PHP (choć lepsze jest powyższe rozwiązanie), zawsze możesz zrobić tak:
  1. $TablicaID = Array();
  2. while ($row = mysql_fetch ... ) {
  3. $TablicaID[] = $row['id'];
  4. }
  5.  
  6. $query = sprintf('SELECT SUM(liczba) AS suma FROM xxx WHERE id IN(%s)', implode(',', $TablicaID));
  7. $res = mysql_query($query);
BuncolPL
Wywal mi: Resource id ...
morbic
Tak, bo podałem okrojony przykład. Dodaj na końcu:
  1. list($suma) = mysql_fetch_row($res);


Wtedy w zmiennej $suma masz sumę, o którą Ci chodziło.
BuncolPL
Prawie działa smile.gif

Problem jest jeszcze z tym, że jak jest liczba po przecinku to nie liczy dobrze :/
morbic
Co to znaczy? Możesz podać jakiś przykład? Przykład danych, które są w bazie i wyniku, który dostajesz?

No i w jaki sposób wyświetlasz sumę? Bo dane mogą być zliczane dobrze, może przy obróbce/wyświetlaniu coś gubisz.
BuncolPL
np. liczby 1.5 i 2.8.

Po zsumowaniu wychodzi 4.299999952316284

Ale np. w przypadku 1.5 i 1.5 wychodzi prawidłowo 3.
Damonsson
Zamień float na decimal.
BuncolPL
Zmieniłem na double i też pomogło smile.gif

Dzięki wszystkim za pomoc smile.gif
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.