phpbar.de logo

Mailinglisten-Archive

Re[2]: Abfrage über drei Tabellen

Re[2]: Abfrage über drei Tabellen

Clemens Nau cuNau at gmx.de
Mit Jun 15 08:41:08 CEST 2005


Hallo Sebastian,

Vom Dienstag, 14. Juni 2005 um 11:38:

SM> 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.

SM> 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?

SM>     SELECT ...
SM>       FROM `user_hit`
SM>  LEFT JOIN `rival`
SM>      USING (`r_id`)
SM>  LEFT JOIN `user`
SM>      USING (`u_id`)
SM>   ORDER BY `rival`.`r_value` DESC
SM>      LIMIT 10

SM> ... glaub ich mal so auf die schnelle, und wer wollte da auch subselects
SM> verwenden ...


SM> -- 
SM> Sebastian Mendel

SM> www.sebastianmendel.de
SM> www.sf.net/projects/phpdatetime | www.sf.net/projects/phptimesheet


Vielen Dank, das war auf jeden Fall der Ansatz der mir gefehlt hat.


-- 
Gruss
Clemens

-- 
Infos zur Mailingliste, zur Teilnahme und zum An- und Abmelden unter
-->>  http://www.4t2.com/mysql 


php::bar PHP Wiki   -   Listenarchive