Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP] Pętle i sumowanie wartości zmiennych
Forum PHP.pl > Forum > Przedszkole
Frugo75
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. }
viking
Zrób to bezpośrednio na bazie. SUM i GROUP BY
Frugo75
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'
nospor
oczywiscie. Łączysz tabel przy pomocy JOIN i juz
Frugo75
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?
viking
  1. SELECT * FROM lineup_points
  2. INNER JOIN players_statistics USING(round_id)
  3. WHERE round_id = ?
Frugo75
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.
viking
I w tym momencie potrzebujesz sumowania i grupowania. Zajrzyj do dokumentacji. Kombinuj.
Frugo75
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?
viking
To napisz co ustaliłeś, w jaki sposób starasz się to zrobić i czego nie rozumiesz. Przykłady.
Frugo75
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.
nospor
To napisz jak zrobiles, by jak ktos inny trafi na ten temat tez skorzystal
Frugo75
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
viking
A nawet więcej. Możesz to od razu zsumować w zapytaniu smile.gif
Frugo75
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
viking
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.
Frugo75
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
viking
Do dokumentacji też trzeba czasami zajrzeć przed skorzystaniem z produktu wink.gif I do tego usilnie na tym forum namawiamy.
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.