Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP][MYSQL]Problem z sumowaniem
pawelb
post 3.10.2008, 14:20:22
Post #1





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

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


Witam.

mam problem z sumowaniem wartości zapisanych w postaci "1 000" gdzie występuje spacja jako separator.
Nie mam wpływu na te dane w bazie a chciałbym jej jakoś szybko sumować.
Zrobiłem to tak:

  1. <?php
  2. $sql = mysql_query("SELECT SUM(wartosc) as qnt FROM tabela");
  3. while($row = mysql_fetch_array($sql))
  4.         {
  5.             $suma = $row[qnt]+0;
  6.         }
  7. ?>


ale nie zlicza mi rekordów ze wspomniana spacją.
Macie jakiś pomysł jak to ruszyć.
Wiem, że można by pewnie jakoś powyciągać poszczególne rekordy z wierszy i pousuwać spacje i następnie zsumować, ale zupełnie nie wiem jak napisać taki kod.
Pomocy.
Pozdrawiam
Paweł

Ten post edytował batman 3.10.2008, 17:59:25
Powód edycji: poprawiłem bbcode
Go to the top of the page
+Quote Post
JoShiMa
post 3.10.2008, 14:26:04
Post #2





Grupa: Zarejestrowani
Postów: 1 374
Pomógł: 149
Dołączył: 1.03.2006

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


Jeśli w tabeli pole wartosc nie jest liczbą to nie zrobisz sumowania. Sczytuj wszystkie rekordy zapytaniem. Po php konwertuj do wartości liczbowej i sumuj.


--------------------
Go to the top of the page
+Quote Post
1010
post 3.10.2008, 14:29:32
Post #3





Grupa: Zarejestrowani
Postów: 749
Pomógł: 37
Dołączył: 3.10.2006

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


A jakie pole masz w bazie? Powinieneś mieć jakiś liczbowy (INT, BIGINT itp.) ale jak nie masz to musisz to chyba wyciągać


Bez tego to powinno działać coś takiego:
  1. <?
  2. $sql = mysql_query("SELECT wartosc FROM tabela");
  3. while($row = mysql_fetch_array($sql))
  4. {
  5.   $suma += str_replace(" ", "", $row['wartosc']);
  6. }
  7. ?>



PS: Używaj tagów php - to naprawdę ułatwia czytanie kodu


--------------------
Go to the top of the page
+Quote Post
ddiceman
post 3.10.2008, 14:31:11
Post #4





Grupa: Zarejestrowani
Postów: 326
Pomógł: 121
Dołączył: 23.07.2008
Skąd: Wrocław

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


Da sie na poziome bazy danych:
  1. SELECT SUM(CAST(REPLACE(wartosc, " ", "") AS DECIMAL)) AS qnt FROM tabela;


Ten post edytował ddiceman 3.10.2008, 14:31:24
Go to the top of the page
+Quote Post
pawelb
post 3.10.2008, 14:35:50
Post #5





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

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


Dziękuję, o to chodziło!
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: 12.06.2025 - 23:29