Ranking nur wie?

Hi,

ich such schon den ganzen Tag und bisher leider ohne Erfolg. Vielleicht weiß ja hier jemand

eine Lösung.

Momentan versuche ich über die typische


SELECT @row := @row + 1 AS rank

Methode

ein Ranking zu implementieren.

Das funktioniert in einer Abfrage auch recht gut, über CDBCriteria mit join und ein wenig Spielerei.

Naja die fertige Aufgabenstellung sieht aber etwas anders aus.

Es gibt eine Tabelle "tbl_times". Diese Tabelle hat die Felder "id, timeentry, createdon…".

Auswertungen sollen über die letzte Woche, letztes Monat oder alles erstellt werden können.

Da jederzeit neue Einträge dazukommen können, kann ich das Ranking nicht in der DB ablegen.

Ich müsste also für z.b 30 Tage, ein Criteria erstellen das alle Einträge der letzen 30 Tage

abruft, darauf das Ranking anwendet und ausgehend von dieser Datenbasis dann weitere Abfragen ausführen kann,

beispielsweise die TOP 10 des letzten Monats.

So das wär’s in etwa, hoffe ich hab es halbwegs klar skizziert.

Irgendwelche Anhaltspunkte für mich?

Lg

DevNull

nee, halbwegs klar isses mir leider noch nicht.

das Ranking ergibt sich doch bereits aus der SQL-Abfrage (ORDER BY)?

danach kannst du doch über


foreach ($items as $item)

weitere Sachen anstellen.

Danke erstmal für die Antwort.

Die Erklärung is net optimal.

Du hast natürlich recht, bei einem Top 10 Ranking ergibt es sich aus dem Order By.

Wenn ich allerdings alle Werte einen Benutzers + Ranking(über alle Einträge) ausgeben will,

dann steh ich vor dem Problem. Ich find hier keine schöne Lösung ausser halt über

die Liste der Benutzerzeiten zu iterieren und jedes Ergebnis in einem Rankingtable zu suchen.

Performancetechnisch ein Knieschuss :)