Mailinglisten-Archive |
Clemens Nau wrote: > Hallo, > > ich habe Probleme eine Abfrage hinzubekommen, die über mehrere > Tabellen geht. Da MySQL 3.23.x läuft, kann ich nicht mit SubSelects > arbeiten. > Es gibt 3 TB's: > user (u_id, u_name, u_score) > rival (r_id, r_name, r_value) > user_hit (uh_id, u_id, r_id) > > Benutzer (user), Gegner (rival) und die besigten Gegner pro Benutzer > (user_hit). Jeder Gegner hat einen festen Wert (r_value). Ist ein > Gegner besiegt, gibt es einen Eintrag in die TB user_hit, wo über > die jeweiligen ID's festgehalten wird, wer welchen Gegner besiegt > hat. Zusätzlich wird das Punktekonto eines Benutzers (u_score) um > den Wert des besiegten Gegners erhöht. > > Bisher wurde eine Rangliste erstellt, die einfach die Benutzer, nach > Punkten sortiert, ausgegeben hat. Das soll sich jetzt ändern und da > fängt mein Problem an. > > Die neue Rangliste soll nach den 10 schwersten, besiegten Gegnern > sortiert sein (best of ten). Sind also bereits 15 Gegner besiegt, > sollen die 5 leichtesten nicht in die Ranglistenwertung mit > eingehen. die 'Schwere' steht `r_value`? > > Ich müsste also pro Benutzer die "Hitliste" abfragen, dann für jeden > besigten Gegner den Wert aus der Gegner-TB auslesen und davon nur > die 10 besten nehmen. > Daran bin ich aber bisher kläglich gescheitert. Kann mir jemand > mit einer möglichen Abfrage weiter helfen? Oder war das zu > verwirrend? SELECT ... FROM `user_hit` LEFT JOIN `rival` USING (`r_id`) LEFT JOIN `user` USING (`u_id`) ORDER BY `rival`.`r_value` DESC LIMIT 10 ... glaub ich mal so auf die schnelle, und wer wollte da auch subselects verwenden ... -- Sebastian Mendel www.sebastianmendel.de www.sf.net/projects/phpdatetime | www.sf.net/projects/phptimesheet -- Infos zur Mailingliste, zur Teilnahme und zum An- und Abmelden unter -->> http://www.4t2.com/mysql
php::bar PHP Wiki - Listenarchive