Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][SQL]Problem z sumowaniem rekordów
Forum PHP.pl > Forum > Przedszkole
s4r4h
Mam w bazie tabelę:

Kod
---------------------------------------------------------
id  | user_id    | p1    | p2    | p2    | p2    | p2    | aż do p150
----|------------|-------|-------|-------|-------|-------|  
1  |       1     | 1     |  0    |  1    |  1    |  0    |...
2  |       2     | 1     |  1    |  1    |  1    |  0    |...
3  |       3     | 1     |  0    |  1    |  1    |  1    |...
---------------------------------------------------------


Chciałabym by zapytanie zsumowało mi od p1 do p150 każdy rekord odpowiedniego usera.
Próbowałam z SUM ale coś mi nie wychodzi. Funkcja COUNT daje mi wynik 1 mimo iż jedynek jest więcej.
Co próbowałam robić:
Kod
$q = doquery("SELECT COUNT(*) AS cos FROM tabela WHERE `id_user` = '".$user['id']."';","tabela");
$a = mysql_fetch_array($q);
echo $a['cos'];

Kod
$q = doquery("SELECT SUM(*) AS cos FROM tabela WHERE `id_user` = '".$user['id']."';","tabela");
$a = mysql_fetch_array($q);
echo $a['cos'];

Kod
$q = doquery("SELECT SUM(p1, p2,......,p150) AS cos FROM tabela WHERE `id_user` = '".$user['id']."';","tabela");
$a = mysql_fetch_array($q);
echo $a['cos'];

Kiedy używam COUNT wynikiem jest 1
Jeśli użyje SUM wywala mi błąd:
Kod
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '*) AS cos FROM tabela WHERE `id_user` = '1'' at line 1
SELECT SUM(*) AS cos FROM tabela WHERE `id_user` = '1';


Nie chcę pisać czegoś w rodzaju:
Kod
$q = doquery("SELECT * FROM tabela WHERE `id_user` = '".$user['id']."';","tabela");
$sumka = $q['p1'] +$q['p2'] +$q['p3'] +$q['p4'] +.....+$q['p150'];


Proszę o pomoc
prz3kus
Cytat(s4r4h @ 15.07.2015, 01:53:26 ) *
Nie chcę pisać czegoś w rodzaju:
Kod
$q = doquery("SELECT * FROM tabela WHERE `id_user` = '".$user['id']."';","tabela");
$sumka = $q['p1'] +$q['p2'] +$q['p3'] +$q['p4'] +.....+$q['p150'];


Proszę o pomoc


To może tak:
  1. $sum = 0;
  2. $id=0;
  3. while($id<=150)
  4. {
  5. $sum += $q[$id];
  6. $id++;
  7. }


Jestem jescze nie obudzony moga byc babole, ale ide jest tongue.gif
tomxx
COUNT zwraca ilość rekordów o podanym warunku, więc nie dziw się, że zwraca 1.
Cytat
SUM(p1, p2,......,p150)
tak nie da się zrobić. Można ewentualnie:
  1. SUM(p1) + SUM(p2) + SUM(p3)...
Pyton_000
Taa już widzę jak sobie ręcznie dodaje 150x SUM....
Źle masz zrobioną tabelę to przede wszystkim Twój główny problem.

Co do problemu to:
http://stackoverflow.com/a/22369767/3732803
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.