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