php, sql, array: werte addieren bzw durchschnitt

truckncountry

Grünschnabel
ich bin am verzweifeln, trotz langer suche finde ich nicht die richtige syntax raus.
ich habe ein speditionsverzeichnis, wo die user die firmen bewerten können.
tabelle: bb1_bewertung
userid linkid bewertung
1 1 8
1 5 10
498 313 6
596 313 3
233 331 1
1 338 5
1 342 6
596 351 10
551 421 10
596 536 1
1 645 7
1 726 7
1 751 10
674 780 9
674 782 9
674 783 3
1 852 10
hier ist also der user, der die bewertung abgibt, die speditions-id (linkid) und die bewertung erfasst.
ich will nun den durchschnitt der jeweiligen speditionsbewertungen haben.

das zählen selbst klappt ja prima:
$bewertung = @mysql_query("SELECT COUNT(*) AS menge FROM bb1_bewertung where linkid = '$suchwort'");
$bewertung_anz = @mysql_result($bewertung,0,"menge");
$ausgabe1 .= $bewertung_anz;

aber die syntax für die durchschnittsberechnung überschreitet offensichtlich meinen horizont.. die zahl (der berechnete durchschnitt) soll als $ausgabe2 weitergegeben werden.

hat jemand ne idee? für euch profis sicherlich ne kurze übung in der kaffeepause.. oder?

gruss joe
 
Moin,

das ganze ist einfacher als du denken magst, das Stichwort heisst Gruppierung(GROUP BY)

Mithilfe der Gruppierung kannst du das in einem Rutsch machen :)

SQL:
SELECT linkid, SUM( bewertung ) / count( * ) AS durchschnitt
FROM bb1_bewertung
GROUP BY linkid

Ergebnis:

Code:
linkid  durchschnitt
    1   8.0000
    5  10.0000
  313   4.5000
  331   1.0000
  338   5.0000
  342   6.0000
  351  10.0000
  421  10.0000
  536   1.0000
  645   7.0000
  726   7.0000
  751  10.0000
  780   9.0000
  782   9.0000
  783   3.0000
  852  10.0000
 
Ich hoffe, dass ich nun keinen Bockmist erzähle, aber müsste man mit AVG() nicht das gleiche Ziel erreichen?
Sprich:
SQL:
SELECT linkid, AVG( bewertung )  AS durchschnitt
FROM bb1_bewertung
GROUP BY linkid
 
danke für die hilfsangebote. ich habs selbst lösen können:

$resultt = @mysql_query("SELECT avg(bewertung) as bewertungg FROM bb1_bewertung where linkid='$suchwort'");

while ($row_bewertung = mysql_fetch_array($resultt)) {
$ausgabe2 = $row_bewertung['bewertungg'] ;
}
 
So müsstest du, falls es eine Übersichtsseite (also wo alle bzw. mehrere gelistet sind) geben soll, für jede Spedition die Bewertung einzeln auslesen/berechnen lassen. Mit dem Ansatz von uns (GROUP BY) kannst du es direkt für alle machen. Des Weiteren kannst du dir, sofern linkid einmalig ist, die while-Schleife sparen und dadurch ersetzen
PHP:
$row_bewertung = mysql_fetch_array($resultt);
$ausgabe2 = $row_bewertung['bewertungg'] ;
Nur als kleiner Hinweis ;)

Ansonsten noch eine kleine Bitte: Hier wird gerne Wert auf Groß-/Kleinschreibung und die Nutzung der Code/PHP BB-Tags gelegt :)
 
Zuletzt bearbeitet:
Zurück