Hallo,
ich hab folgendes Problem:
Ich muss von einer orcale Datenbank , auf der ich nur read rechte habe ( kann also keinen VIEW erzeugen), folgenden Zugriff machen:
Ich brauch den Nachnamen, Vornamen, Result (Ergebnis ), Einheit ( "Sportart"), Ort, Jahr und Disziplinnamen der besten 3 Sportler einer Disziplin.
Die Tabellen sehen so aus
ATHLETE: ANR, LASTNAME, FIRSTNAME, CID
COUNTRY: CID, COUNTRY
DISCIPLINE: DNR, DNAME
RESULT: ANR,TNR,DNR RESULT, UNIT
TOURNAMENT: TNR TNAME PLACE YEAR
Mein SQL- Befehl sieht bis jetzt so aus:
SELECT LASTNAME, FIRSTNAME, RESULT, UNIT, PLACE, YEAR, DNAME FROM ATHLETE.ATHLETE, ATHLETE.DISCIPLINE, ATHLETE.RESULT, ATHLETE.TOURNAMENT WHERE (( TOURNAMENT.TNR = RESULT.TNR) AND ( RESULT.DNR = DISCIPLINE.DNR)) AND RESULT.DNR = "+ discipline +" ORDER BY RESULT DECS
"+ discipline +" ist eine Benutzer Eingabe die mit Hilfe von Java übergebenen wird
Ich weiss das es mit mysql das ganz einfach zu lösen ist mit LIMIT 0,3 . Dies geht aber mir orcale leider nicht
ich hab es auch schon mit rownum <4 probiert, dabei liefert er mir die ersten vier Einträge der Tabelle nach Result absteigend, aber nicht wie gewünscht nur die besten 3 Einträge. Ich hab keine Idee wie die Abfrage umgestallten muss, dass zuerst sortiert wird und dann die besten 3 ausgewählt werden. Ich weis jetzt leider nicht weiter, hab es auch schon mit
Count(*) probiert, dabei gibt das System mir die Fehlermeldung:
RA-00934: Gruppenfunktion ist hier nicht zulässig
Kann mir einer helfen oder einen Tip geben wie ich es noch anderes lösen kann ?
( also jetzt nur mit SQL und nicht mit Java )
ich hab folgendes Problem:
Ich muss von einer orcale Datenbank , auf der ich nur read rechte habe ( kann also keinen VIEW erzeugen), folgenden Zugriff machen:
Ich brauch den Nachnamen, Vornamen, Result (Ergebnis ), Einheit ( "Sportart"), Ort, Jahr und Disziplinnamen der besten 3 Sportler einer Disziplin.
Die Tabellen sehen so aus
ATHLETE: ANR, LASTNAME, FIRSTNAME, CID
COUNTRY: CID, COUNTRY
DISCIPLINE: DNR, DNAME
RESULT: ANR,TNR,DNR RESULT, UNIT
TOURNAMENT: TNR TNAME PLACE YEAR
Mein SQL- Befehl sieht bis jetzt so aus:
Code:
SELECT LASTNAME, FIRSTNAME, RESULT, UNIT, PLACE, YEAR, DNAME FROM ATHLETE.ATHLETE, ATHLETE.DISCIPLINE, ATHLETE.RESULT, ATHLETE.TOURNAMENT WHERE (( TOURNAMENT.TNR = RESULT.TNR) AND ( RESULT.DNR = DISCIPLINE.DNR)) AND RESULT.DNR = "+ discipline +" ORDER BY RESULT DECS
SELECT LASTNAME, FIRSTNAME, RESULT, UNIT, PLACE, YEAR, DNAME FROM ATHLETE.ATHLETE, ATHLETE.DISCIPLINE, ATHLETE.RESULT, ATHLETE.TOURNAMENT WHERE (( TOURNAMENT.TNR = RESULT.TNR) AND ( RESULT.DNR = DISCIPLINE.DNR)) AND RESULT.DNR = "+ discipline +" ORDER BY RESULT DECS
"+ discipline +" ist eine Benutzer Eingabe die mit Hilfe von Java übergebenen wird
Ich weiss das es mit mysql das ganz einfach zu lösen ist mit LIMIT 0,3 . Dies geht aber mir orcale leider nicht
ich hab es auch schon mit rownum <4 probiert, dabei liefert er mir die ersten vier Einträge der Tabelle nach Result absteigend, aber nicht wie gewünscht nur die besten 3 Einträge. Ich hab keine Idee wie die Abfrage umgestallten muss, dass zuerst sortiert wird und dann die besten 3 ausgewählt werden. Ich weis jetzt leider nicht weiter, hab es auch schon mit
Count(*) probiert, dabei gibt das System mir die Fehlermeldung:
RA-00934: Gruppenfunktion ist hier nicht zulässig
Kann mir einer helfen oder einen Tip geben wie ich es noch anderes lösen kann ?
( also jetzt nur mit SQL und nicht mit Java )