Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]sumowanie wartosci
Forum PHP.pl > Forum > Przedszkole
pkania128
witam, mam 3 komorki z wartosciami
id cena1 cena 2
1 20pln 25pln
2 40pln 15pln
itd....
takich rekordow w bazie jest kilka
probuje je do siebie dodac zeby wyszla ich suma

gdy sumuje za pomoca polecenia SUM
  1. $zapytanie = "SELECT SUM( cena1 + cena2 ) AS suma
  2. FROM `cena` ";
  3.  
  4. echo" suma: ";echo stripslashes($wiersz["suma"]),"


sumuje wszystkie ceny we wszystkich rekordach, mi zalezy zeby zsumowac cene1 i cene2 dla kazdego rekordu oddzielnie
cos na zasadzie:
id cena1 cena 2 Cena suma
1 20pln 25pln 45pln
2 40pln 15pln 55pln

gdy uzywam:
  1. $zapytanie = "SELECT SUM( cena1 + cena2 ) AS suma
  2. FROM `cena` WHERE id = '1' ";
  3.  
  4. echo" suma: ";echo stripslashes($wiersz["suma"]),"

to liczy mi to co chce ale dla konkretnego id, a mi zalezy zeby wyswietlala sie suma cena1 i cena2 dla kazdego rekordu oddzielnie

z gory dziekuje za pomoc

potreb
GROUP BY `id`
Meares
Nie jestem pewny czy zadziała ale spróbuj:
  1. $query = mysql_query('SELECT `id` AS "ID", `a` AS "A", `b` AS `"B", SUM(`a` + `b`) AS "SUMA" FROM `tabela` ORDER BY `id` ASC') or die(mysql_error());
  2. echo '<table><tr><td>ID</td><td>A</td><td>B</td><td>SUMA</td></tr>';
  3. while($result = mysql_fetch_assoc($query)) {
  4. echo '<tr><td>'.$result['ID'].'</td><td>'.$result['A'].'</td><td>'.$result['B'].'</td><td>'.$result['SUMA'].'</td></tr>';
  5. }
  6. echo '</table>';
pkania128
dzieki, troche zmodyfikowalem Wasze podpowiedzi i dziala
8_pasarzer_NOSTROMO
Witam podepnę się pod temat bo też mam problem z sumowaniem

Ja mam taka tabele.

GRAFIK

id p1 p2 p3 p4 p5 p6 p7 p8 p9 p10 p11 p12 p13 p14 p15 p16 p17 p18 p19 p20 p21 p22 p23 p24 p25 p26 p27 p28 p29 p30 p31

4 7 7 7 8 14 l-4 l-4 l-4 l-4 l-4 l-4 7 14 17 22 U U U U U 19 19 l-4 l-4 itd............


Chciałbym otrzymać wynik ilości kolumn gdzie nie występuje wpis "l-4" oraz "U". Dla tego przykładu wynik ten to 12, ale jak go osiągnąć ? Chciałbym osiągnąć liczbę ilości kolumn w jednym wierszu gdzie nie występuje ani wpis "l-4" ani wpis "U".

piotrooo89
tak mi sie wydaje że w samym mysql'u tego nie zrobisz, tylko php w tym wypadku.
8_pasarzer_NOSTROMO
Ok, a masz pomysła jak zrobić to w php ?
piotrooo89
pobierasz dany rekord. każdą wartość wewalasz do tablicy, później iterujesz po tablicy i sprawdzasz jeśli jest różna od l-4 i U to zapisujesz, i każdy obieg pętli dodaje Ci jeden do licznika.
8_pasarzer_NOSTROMO
Może masz gdzieś gotowe rozwiązanie, jeśli nie sam coś wymyśle. Chyba że ktoś ma jeszcze jakies pomysły ?
askone
Hej

Wydaje mi się, iż skoro pobierasz te dane z bazy to dasz radę także je policzyć winksmiley.jpg Aby nie generować dodatkowych zapytań do bazy skorzystaj z podzapytań w tym którym pobierasz dane:

  1. SELECT
  2. dane,
  3. SELECT count(id) FROM tabela WHERE STATUS = 'l-4',
  4. SELECT count(id) FROM tabela WHERE STATUS = 'U'
  5. FROM
  6. tabela


Zapytanie w MSSQL, ale pewnie da się zapisać i w MySQL winksmiley.jpg Oczywiście [dane] i [tabela] to tylko nazwy przykładowe...

Pozdro
8_pasarzer_NOSTROMO
Witam, po długich bojach uporałm się z problemem. Dla potomnych podaje gotowe rozwiazanie:

  1. for ($i=1;$i<32;$i++)
  2. {
  3. include "baza.php";
  4. $zapytanie = "SELECT p$i FROM grafik where ((id='1') && (p$i!='l-4' && p$i!='L4' && p$i!='l4' && p$i
  5. !='L-4' && p$i!='u' && p$i!='U'))";
  6. $wykonaj = mysql_query($zapytanie) or die ("Zapytanie bazy o p$i błędne");
  7. $norma_ind = mysql_num_rows($wykonaj);
  8. print $norma_ind;
  9. $zapytanie = "update norma_ind set z$i='$norma_ind' where (id='1')";
  10. $wykonaj = mysql_query($zapytanie) or die ("Wprowadzenie normy ind błędne");
  11. unset($norma_ind);
  12. }
  13. $zapytanie=mysql_query("update norma_ind SET suma=z1+z2+z3+z4+z5+z6+z7+z8+z9+z10+z11+z12+z13+z14+z15+z16+z17+z18+z19+z20+z21+
    z22+z23+z24+z25+z25+z26+z27+z28+z29+z30+z31 WHERE id='1'"
    );


Pozostaje pobrać wynik z kolumny (suma) z tabeli norma_ind.

Wiem wiem, poleciałem schodami dookoła, ale ważne, że działa. Klasycznie już zaraz się znajdzie mądry, który napisze 1 linie kodu i osiągnie to samo, lecz gdy ja pytałem to on siedział cicho.
Pozdro
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-2024 Invision Power Services, Inc.