Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP][SQL]Problem z sumowaniem rekordów
s4r4h
post
Post #1





Grupa: Zarejestrowani
Postów: 1
Pomógł: 0
Dołączył: 15.07.2015

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


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

Ten post edytował s4r4h 15.07.2015, 00:54:31
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 3)
prz3kus
post
Post #2





Grupa: Zarejestrowani
Postów: 260
Pomógł: 30
Dołączył: 22.01.2007

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


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

Ten post edytował prz3kus 15.07.2015, 07:24:35
Go to the top of the page
+Quote Post
tomxx
post
Post #3





Grupa: Zarejestrowani
Postów: 172
Pomógł: 27
Dołączył: 5.10.2013

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


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)...
Go to the top of the page
+Quote Post
Pyton_000
post
Post #4





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

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


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
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 - 13:20