Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MySQL][PHP]Obliczenie średniej dla kilku pól
-kototi-
post
Post #1





Goście







Witam,

Mam w tabeli pola: rating1, rating2, rating3, rating4, rating5 i w tych polach przetrzymuje liczbę poszczególnych ocen, np. rating3 = 25 czyli 25 razy coś tam oceniono na 3, itp.

Chciałbym wyliczyć średnią tych trzech pól.

Zrobiłem tak, ale nie działa:

  1.  
  2. <?php
  3. include("connect.php");
  4. $query = "SELECT id,rating1,rating2,rating3,rating4,rating5 FROM tabela WHERE id='".(int)$_GET['id']."'";
  5. $result = mysql_query ($query);
  6. while ($row = mysql_fetch_array($result)){
  7. $average_ratings .= '('.$row[1].'*1)+('.$row[2].'*2)+('.$row[3].'*3)+('.$row[4].'*4)+('.$row[5].'*5)/'.$row[1].'+'.$row[2].'+'.$row[3].'+'.$row[4].'+'.$row[5].'';}
  8. echo ''.$average_ratings.''
  9. ?>
  10.  
Go to the top of the page
+Quote Post
nospor
post
Post #2





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




1) A moze bys raczyl napisac, czym sie objawia to nie dzialanie??
2) echo ''.$average_ratings.'' zjadles SREDNIK na koncu

ps: czemu budujesz w tekscie dzialanie? Zupelnie bez sensu

nie:
$wynik = '('.$zm1.'*1)+('.$zm2.'*2) ....
a normalnie, masz to wyliczac:
$wynik = ($zm1*1 + $zm2*2) / ($zm1 + $zm2);
Go to the top of the page
+Quote Post
b4rt3kk
post
Post #3





Grupa: Zarejestrowani
Postów: 1 933
Pomógł: 460
Dołączył: 2.04.2010
Skąd: Lublin

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


Możesz sobie wyliczyć średnią już w zapytaniu, będzie bardziej elegancko.

  1. SELECT avg(rating1*1+rating2*2+rating3*3), id WHERE id = 123 GROUP BY id


123 to przykładowe id.
Go to the top of the page
+Quote Post
nospor
post
Post #4





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




@b4rt3kk Twoje zapytanie nie wylicza tego co trzeba (IMG:style_emoticons/default/wink.gif)
Go to the top of the page
+Quote Post
trueblue
post
Post #5





Grupa: Zarejestrowani
Postów: 6 806
Pomógł: 1828
Dołączył: 11.03.2014

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


Cytat(b4rt3kk @ 31.03.2014, 14:48:03 ) *
Możesz sobie wyliczyć średnią już w zapytaniu, będzie bardziej elegancko.
  1. SELECT avg(rating1*1+rating2*2+rating3*3), id WHERE id = 123 GROUP BY id

Z użyciem AVG nie, ale przez metodę, którą wykorzystuje w PHP.
AVG dzieli przez liczbę składników, a on dzieli przez sumę składników.
Go to the top of the page
+Quote Post
Sephirus
post
Post #6





Grupa: Zarejestrowani
Postów: 1 527
Pomógł: 438
Dołączył: 28.06.2011
Skąd: Warszawa

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


No to można chyba ewentualnie (i jak prosto):

  1. SELECT (rating1*1+rating2*2+rating3*3)/(rating1+rating2+rating3) AS `average`, id WHERE id = 123
Go to the top of the page
+Quote Post
nospor
post
Post #7





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




No tak, to jest dokladnie przeniesienie tego co napisalem w php do mysql. Tutaj zadne AVG nie zdadzą egzaminu.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 4.10.2025 - 01:13