phpbar.de logo

Mailinglisten-Archive

Abfrage über drei Tabellen

Abfrage über drei Tabellen

Sebastian Mendel lists at sebastianmendel.de
Die Jun 14 11:38:11 CEST 2005


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