PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : komplexer Join



Romanday
16-10-2005, 09:52
Mit

SELECT u.user_id ,u.name, SUM(r.score) AS Punkte
FROM r,u
WHERE
u.user_id = r.user_id
AND r.test_id = 8
GROUP BY u.name ORDER BY Punkte DESC LIMIT 0,1

kann ich den HighScore eines Users in einer Test Kategorie ermitteln
(Platz 1)

Nun möchte ich aber sämtliche ersten Plätze in allen Test Kategorien ermitteln.

Die Tabellen r und test sind mit test.test_id = r.test_id miteinander verknüpft.

Ist das überhaupt mit einer SQL Abfrage machbar?

ClausVB
18-10-2005, 08:17
Du kannst Dir mit MAX() alle Maximalwerte geben lassen und dass auch in einer WHERE verwenden.

Allerdings kann ich mir im Moment die Tabellenstrukturen nicht richtig vorstellen. Kannst Du die mal aufzeichnen?

Im Moment vermute ich ein Rückgabeergebnis Deines SQLs wie:

u.name| Punkte
CVB | 1298
XY | 1345

Diese User sind nun verschiedenen Kategorien zugeordnet, richtig?

Wenn das mit einer 1:1 Beziehung gemacht wurde, sollte es gehen. Wenn es einen 1:N Beziehung ist, geht es mit SQL nicht.

Siehe Gruppenwechsel (http://lamp.clausvb.de/vlib_examples/gruppenwechsel.php) bzw. verschachtelte Abfragen und WHILE-Schleifen.

Gruß
Claus