vOerni
Ensign
- Registriert
- Jan. 2008
- Beiträge
- 146
Nabend,
Ich habe eine Bundesliga Tabelle mit dem Datentyp Team_Type. Dieser hat die Funktion "Order Member Function sort(t Team_type)" zum Sortieren der Tabelle
Mit "SELECT * from bundesliga x ORDER BY VALUE(x)" erhält man eine sortierte Ausgabe in absteigender Reihenfolge.
Leider verstehe ich nicht ganz, wie das Sortieren funktioniert.
Ich denke mal, das zunächst die erste mit der zweiten Zeile verglichen wird und wird 1 zurückgegeben, so steht die zweite Zeile an erster Stelle.
Was wird jetzt verglichen? Dritte Zeile mit den bereits sortierten Zeilen, was bedeutet, dass die Order Methode automatisch mehrmals aufgerufen wird....
Bitte um Hilfe, wie die Methode abläuft
Danke
Ich habe eine Bundesliga Tabelle mit dem Datentyp Team_Type. Dieser hat die Funktion "Order Member Function sort(t Team_type)" zum Sortieren der Tabelle
Code:
CREATE OR REPLACE TYPE BODY Team_Type AS
Order Member Function sort(t Team_type)
RETURN NUMBER IS
BEGIN
IF punkte < t.punkte THEN
RETURN 1;
ELSIF punkte > t.punkte THEN
RETURN -1;
ELSIF punkte = t.punkte and ((tore-gegentore)<(t.tore-t.gegentore)) THEN
RETURN 1;
ELSIF punkte = t.punkte and ((tore-gegentore)>(t.tore-t.gegentore)) THEN
RETURN -1;
ELSIF punkte = t.punkte and ((tore-gegentore)=(t.tore-t.gegentore)) and tore<t.tore THEN
RETURN 1;
ELSIF punkte = t.punkte and ((tore-gegentore)>(t.tore-t.gegentore)) and tore>t.tore THEN
RETURN -1;
ELSE
RETURN 0;
END IF;
END;
END;
/
Mit "SELECT * from bundesliga x ORDER BY VALUE(x)" erhält man eine sortierte Ausgabe in absteigender Reihenfolge.
Leider verstehe ich nicht ganz, wie das Sortieren funktioniert.
Ich denke mal, das zunächst die erste mit der zweiten Zeile verglichen wird und wird 1 zurückgegeben, so steht die zweite Zeile an erster Stelle.
Was wird jetzt verglichen? Dritte Zeile mit den bereits sortierten Zeilen, was bedeutet, dass die Order Methode automatisch mehrmals aufgerufen wird....
Bitte um Hilfe, wie die Methode abläuft
Danke