Das ist jetzt die Innere. Wenn ich jetzt select *, rownum schreibe, meldet er sofort einen Fehler.
Die äußere kann ich machen, was ich will. Nach den Methoden, die hier beschrieben werden, bekomm ich ebenfalls einen Fehler. Ansonsten ist und bleibt rownum = 52.
...
Ich brauche schon die gesamte Abfrage, nicht nur die innere.
select *, rownum ist falsch, denn entweder du willst implizit alle, oder du gibst die Spalten, die du brauchst explizit an.
Außerdem musst du zuerst ordnen, bevor du ROWNUM benutzt, da ROWNUM sonst auf die ungeordneten Einträge angewendet wird und danach nach ECTS geordnet wird.
Ohne jetzt deine ganzen Bezeichnungen genau zu kennen, sollte deine Abfrage wie folgt aufgebaut sein:
1. Die innerste Abfrage wählt die Tabelle studienleistung und ordnet die Einträge nach ECTS:
2. Aus dem Ergebnis der innersten Abfrage (also den geordneten Einträgen) wählt die nächstäußere Abfrage die ersten N Einträge mit Hilfe von ROWNUM:
Wichtig hier, dass die ROWNUM-Werte, die hier rauskommen in der nächstäußeren Abfrage verfügbar sind, also zwischenspeichern in rn.
3. Nun wählt die äußerste Abfrage aus dem Ergebnis der vorherigen Abfrage (also den ersten N Einträgen der nach ECTS geordneten Einträge aus studienleistung) den untersten Eintrag, also den N-ten Eintrag und zwar mit Hilfe des zuvor in rn gespeicherten ROWNUM-Wertes:
Hier können wir ruhig auf Gleichheit der ROWNUM-Werte prüfen, da sie in einer Spalte zwischengespeichert sind.
Wenn du nun alle Abfragen in einander verschachtelst und die korrekten Bezeichnungen verwendest, sollte es funktionieren.
Zitat von Whiz-zarD
edit:
Nach deiner Methode
gibt er nicht mal ein ein Ergebnis aus.
...
Das ist Irians Ansatz, aber es funktioniert definitiv auch. Unter diesen Umständen: Welche Oracle-Version benutzt du?
Zitat von Drakes
Und du hast wirklich schon ausprobiert?
...
Ich habe doch bereits geschrieben, dass es nicht funktionieren wird. ^^