Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MySQL][PHP] Pętle i sumowanie wartości zmiennych
Frugo75
post 27.03.2014, 10:23:39
Post #1





Grupa: Zarejestrowani
Postów: 116
Pomógł: 0
Dołączył: 13.06.2013

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


Panowie, chyba mam banalny problem, ale ani jak nie mogę sobie z nim poradzić. Mianowicie:
Jak widać w kodzie, pobieram z bazy punkty zawodników. Pobieram z jednej tablicy id zawodnika i punkty oraz z innej tablicy to samo.

Chcę teraz zsumować punkty dla każdego zawodnika. No i wychodzą mi błędy, przez pętle.
Czy mogłbym mi ktoś podpowiedziec rozwiązanie?


  1. require_once 'functions.php';
  2. dbConnect();
  3.  
  4. $qry = takelineup_points(1);
  5.  
  6. foreach ($qry as $grys){
  7. $player_id = $grys['player_id'];
  8. $points = $grys['points'];
  9.  
  10. $player_id." - "."$points"."<hr>";
  11.  
  12.  
  13.  
  14. //
  15.  
  16. $qry2 = takeplayers_statistics(1);
  17.  
  18. foreach ($qry2 as $grys2){
  19. $player_id1 = $grys2['players_id'];
  20. $points1 = $grys2['points'];
  21.  
  22. $player_id1." - "."$points1"."<hr>";
  23. $total_points = $points + $points1;
  24.  
  25. echo $player_id1." - "."$total_points"."<hr>";
  26. }
  27. }
Go to the top of the page
+Quote Post
viking
post 27.03.2014, 10:25:06
Post #2





Grupa: Zarejestrowani
Postów: 6 378
Pomógł: 1116
Dołączył: 30.08.2006

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


Zrób to bezpośrednio na bazie. SUM i GROUP BY


--------------------
Go to the top of the page
+Quote Post
Frugo75
post 27.03.2014, 10:31:01
Post #3





Grupa: Zarejestrowani
Postów: 116
Pomógł: 0
Dołączył: 13.06.2013

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


Cytat(viking @ 27.03.2014, 10:25:06 ) *
Zrób to bezpośrednio na bazie. SUM i GROUP BY


Z dwóch roznych tabel? Da się? Zapytania są takie:

  1. SELECT * FROM lineup_points WHERE round_id = '$id'


oraz

  1. SELECT * FROM players_statistics WHERE round_id = '$id'
Go to the top of the page
+Quote Post
nospor
post 27.03.2014, 10:32:08
Post #4





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




oczywiscie. Łączysz tabel przy pomocy JOIN i juz


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
Frugo75
post 27.03.2014, 10:34:37
Post #5





Grupa: Zarejestrowani
Postów: 116
Pomógł: 0
Dołączył: 13.06.2013

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


Cytat(nospor @ 27.03.2014, 10:32:08 ) *
oczywiscie. Łączysz tabel przy pomocy JOIN i juz


Czy możesz mi napisać jak to połączyć, prosze?
Go to the top of the page
+Quote Post
viking
post 27.03.2014, 10:41:15
Post #6





Grupa: Zarejestrowani
Postów: 6 378
Pomógł: 1116
Dołączył: 30.08.2006

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


  1. SELECT * FROM lineup_points
  2. INNER JOIN players_statistics USING(round_id)
  3. WHERE round_id = ?


--------------------
Go to the top of the page
+Quote Post
Frugo75
post 27.03.2014, 10:53:39
Post #7





Grupa: Zarejestrowani
Postów: 116
Pomógł: 0
Dołączył: 13.06.2013

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


Cytat(viking @ 27.03.2014, 10:41:15 ) *
  1. SELECT * FROM lineup_points
  2. INNER JOIN players_statistics USING(round_id)
  3. WHERE round_id = ?



Dzięki, sprawdziłem, ale wybiera mi wtedy zawodników i ich punkty każdego po 8 razy.
Go to the top of the page
+Quote Post
viking
post 27.03.2014, 10:59:58
Post #8





Grupa: Zarejestrowani
Postów: 6 378
Pomógł: 1116
Dołączył: 30.08.2006

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


I w tym momencie potrzebujesz sumowania i grupowania. Zajrzyj do dokumentacji. Kombinuj.


--------------------
Go to the top of the page
+Quote Post
Frugo75
post 27.03.2014, 13:20:09
Post #9





Grupa: Zarejestrowani
Postów: 116
Pomógł: 0
Dołączył: 13.06.2013

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


Cytat(viking @ 27.03.2014, 10:59:58 ) *
I w tym momencie potrzebujesz sumowania i grupowania. Zajrzyj do dokumentacji. Kombinuj.

I takiej odpowiedzi - motywującej i unifikującej moje lenistwo - podświadomie potrzebowałem.wink.gif
Dzięki jeszcze raz

Cytat(viking @ 27.03.2014, 10:59:58 ) *
I w tym momencie potrzebujesz sumowania i grupowania. Zajrzyj do dokumentacji. Kombinuj.


Ni ch***. Mecze się i nie wiem jak. Może ktoś mi pomoc?
Go to the top of the page
+Quote Post
viking
post 27.03.2014, 13:28:18
Post #10





Grupa: Zarejestrowani
Postów: 6 378
Pomógł: 1116
Dołączył: 30.08.2006

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


To napisz co ustaliłeś, w jaki sposób starasz się to zrobić i czego nie rozumiesz. Przykłady.


--------------------
Go to the top of the page
+Quote Post
Frugo75
post 27.03.2014, 14:00:36
Post #11





Grupa: Zarejestrowani
Postów: 116
Pomógł: 0
Dołączył: 13.06.2013

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


Cytat(viking @ 27.03.2014, 13:28:18 ) *
To napisz co ustaliłeś, w jaki sposób starasz się to zrobić i czego nie rozumiesz. Przykłady.


Znalazłem na forum cos podobnego i mam teraz tak:

  1. SELECT p.player_id
  2. FROM (SELECT player_id, Sum(points) AS Suma FROM lineup_points GROUP BY player_id) AS p
  3. LEFT JOIN (SELECT players_id, SUM(points) AS Suma FROM players_statistics GROUP BY players_id) AS w ON players_id = player_id


Przyznaje się, że niewiele z tego rozumiem (też na razie nie mogę usiaść na spokojnie, bo siedze z chorym dzieckiem), podstawilem tylko dane z mojej bazy.



Cytat(Frugo75 @ 27.03.2014, 13:31:10 ) *
Znalazłem na forum cos podobnego i mam teraz tak:

  1. SELECT p.player_id
  2. FROM (SELECT player_id, Sum(points) AS Suma FROM lineup_points GROUP BY player_id) AS p
  3. LEFT JOIN (SELECT players_id, SUM(points) AS Suma FROM players_statistics GROUP BY players_id) AS w ON players_id = player_id


Przyznaje się, że niewiele z tego rozumiem (też na razie nie mogę usiaść na spokojnie, bo siedze z chorym dzieckiem), podstawilem tylko dane z mojej bazy.



OK zrobiłem;))
Jeszcze raz dzięki za pomoc.
Go to the top of the page
+Quote Post
nospor
post 27.03.2014, 14:01:54
Post #12





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




To napisz jak zrobiles, by jak ktos inny trafi na ten temat tez skorzystal


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
Frugo75
post 27.03.2014, 14:03:30
Post #13





Grupa: Zarejestrowani
Postów: 116
Pomógł: 0
Dołączył: 13.06.2013

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


Cytat(nospor @ 27.03.2014, 14:01:54 ) *
To napisz jak zrobiles, by jak ktos inny trafi na ten temat tez skorzystal

Masz racje.

Oto tak. Efekt - mam dwie sumy, ktore moge juz dodac w php.

  1. SELECT player_id, p.suma1, w.suma2
  2. FROM (SELECT player_id, Sum(points) AS Suma1 FROM lineup_points GROUP BY player_id) AS p
  3. LEFT JOIN (SELECT players_id, SUM(points) AS Suma2 FROM players_statistics GROUP BY players_id) AS w ON players_id = player_id
Go to the top of the page
+Quote Post
viking
post 27.03.2014, 14:28:23
Post #14





Grupa: Zarejestrowani
Postów: 6 378
Pomógł: 1116
Dołączył: 30.08.2006

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


A nawet więcej. Możesz to od razu zsumować w zapytaniu smile.gif


--------------------
Go to the top of the page
+Quote Post
Frugo75
post 27.03.2014, 14:57:05
Post #15





Grupa: Zarejestrowani
Postów: 116
Pomógł: 0
Dołączył: 13.06.2013

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


Cytat(viking @ 27.03.2014, 14:28:23 ) *
A nawet więcej. Możesz to od razu zsumować w zapytaniu smile.gif


...i jeszcze więcej... Ty mi nie powiesz jak, prawda?smile.gif
Go to the top of the page
+Quote Post
viking
post 27.03.2014, 15:03:31
Post #16





Grupa: Zarejestrowani
Postów: 6 378
Pomógł: 1116
Dołączył: 30.08.2006

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


Już nie będę taki. Select 1 + 2;
https://dev.mysql.com/doc/refman/5.0/en/ari...-functions.html

Aczkolwiek zdaję sobie sprawę że to wyższa matematyka.


--------------------
Go to the top of the page
+Quote Post
Frugo75
post 27.03.2014, 15:12:03
Post #17





Grupa: Zarejestrowani
Postów: 116
Pomógł: 0
Dołączył: 13.06.2013

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


Cytat(viking @ 27.03.2014, 15:03:31 ) *
Już nie będę taki. Select 1 + 2;
https://dev.mysql.com/doc/refman/5.0/en/ari...-functions.html

Aczkolwiek zdaję sobie sprawę że to wyższa matematyka.


No właśnie, a tu "przedszkole", ale masz racje, trzeba się doskonalićwink.gif
Go to the top of the page
+Quote Post
viking
post 27.03.2014, 15:15:37
Post #18





Grupa: Zarejestrowani
Postów: 6 378
Pomógł: 1116
Dołączył: 30.08.2006

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


Do dokumentacji też trzeba czasami zajrzeć przed skorzystaniem z produktu wink.gif I do tego usilnie na tym forum namawiamy.


--------------------
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.07.2025 - 20:45