TOP TEN Abfragebefehl ?????

A5 Infoschlampe

Erfahrenes Mitglied
Hallo,

ich habe eine Votingliste in der Datenbank gespeichert, die den Attribut namen "vote" besitzt.

dazu kommt nochmal die spalte mit dem namen "user_id", der die id des users enthält (1,2 oder 3 z.B), der einen vote wert erhalten hat. also sieht das so z.b. aus:

vote ist dabei eine schulnote von 1 bis 6

id | user_id | vote
------|-----------|--------
1 | 5 | 3
2 | 5 | 5
3 | 5 | 1
4 | 7 | 4
5 | 9 | 2
6 | 5 | 1
...

Meine Frage:
Nun möchte ich aus der Tabelle die TOP TEN in Bezug auf den durchschnittswert der vote werte ermitteln mit der Select Abfrage, habe aber keine Ahnung wie das geht!

Ich könnte ja machen "Select AVG(vote) from table Limit 0,10" aber dann würde er alle *vote*'s zusammenzählen und den durchschnitt errechen, ABER es muss ja immer nur der Durchscnitt errechnett werden von den vote-werten die zu der user-id gehören.

Also im obigen bespiel heisst das "errechne durchscnittswert von vote in bezug auf user 5" ... " dann das gleiche bei user 7"..." und das gleiche bei user 9" ..... "und am zeige die 10 besten user_ids von platz 1 bis platz 10 (gut->schlecht) an".


Kann man verstehen was ich meine???!!! Hoffe doch, also ich komm da leidergottes nicht weiter, ist aber verdamt wichtig, wäre super wenn mir jemnd helfen könnte! Thx! :)

Ciao
 
hi,
funzed das nicht?

Select AVG(vote) from table Limit 0,10 where userID = 5

z.b. wo du nun aber halt die userid per abfrage machst, also variable :)
 
was soll denn das mit dem limit 0,10.......bei einer avg() abfrage wird doch ehh nur der wert von einem user zurückgegeben......

also ich würde das so schreiben:
PHP:
//als erstes brauchst du einen array mit allen user_id's
//die werden dann in dem array $users[] gespeichert
//$num_users ist die anzahl der user
//...dann:

for($i=0;$i<$num_user;$i++){
  $aktueller_user = $users[$i];
  $query = 'select avg(vote) from votingliste where user_id = '.$aktueller_user;
    //auslesen der durchschnitte eines users...
  $result = mysql_query($query);
    //anfrage an die datanbank
  $user_avg[$aktueller_user] = mysql_result($result;0;'avg(vote));
    //speichern des durchschnitte in dem array $user_avg[] mit der eindeutigen user_id als schlüssel
}

//jetzt musst du nur noch aus dem array $user_avg[] die größten 10 oder so rausfiltern und die zugehörigen user_id's ausgeben......
//da brauch man halt einen extra algorithmus...:-)

ich hoffe mal, das hat geholfen......

acho so ich habs mal ausprobiert bei mir, wegen der synta xund da funzt es:):)

//so far....

//bad taste
 
@bastase & trek ...

hey leuts, vielen danke, aber bin grade so sternhagelvoll dass ich die sourcecodes nicht mal cut&pastn kann, probiers nachher, bzw. nach schlaf und sag obs geklappt hat oder nicht. aber trotzdem thanxks für eure anstwort...

wallah ciao
 
Zurück