Anzeige: united-domains - Die ganze Welt der Domains
Einfache & schnelle Domain-Registrierung zu fairen Preisen ohne Einrichtungsgebühren. Mehr als 250 Domain-Endungen aus einer Hand inklusive E-Mail- & Web-Weiterleitung. Einzigartiges Domain-Portfolio zur bequemen & sicheren Verwaltung Ihrer Domain-Namen.
Jetzt Domain-Check bei united-domains!
SQL Query => Limit-Funktion ohne Limit-Befehl (kein MySQL!!)
Autor: fgb
Datum: 09.09.2011 21:09:45
Hallo zusammen,
ich habe ein kleines Problem. Ich muss einen SQL-Konformen Query erstellen, bei dem ich keine Befehle wie "LIMIT, TOP oder ähnlich" nutzen darf, um eine limitierte Anzahl an Tupeln auszuspucken.
Beispiel:
Tabelle 'rundenzeit';
Felder: 'firstname', 'lastname', 'roundetime'
=> varchar, varchar, time
Annahme, dass firstname und lastname eindeutig sind.
Gewünschtes Resultat: Die ersten 5 Tupel, sortiert nach "roundtime" aufsteigend.
MSSQL: "SELECT TOP 5 FROM rundenzeit ORDER BY roundtime"
PostgreSQL: "SELECT * FROM rundenzeit LIMIT 5 ORDER BY roundtime"
Wie bekomme ich jetzt das selbe Resultat nur ohne Zusatzfunktionen wie LIMIT oder TOP?
Ich dachte irgendwie sowas wie
"
SELECT * FROM rundenzeit r WHERE 5 <=
(
SELECT count(*) FROM rundenzeit z
)
ORDER BY roundtime ASC;
"
Hier bekomme ich aber alle Tupel ausgespuckt. Komme hier irgendwie nicht auf einen grünen Zweig :-(
Jemand eine Idee?
Danke und viele Grüße
Felix
Re: SQL Query => Limit-Funktion ohne Limit-Befehl (kein MySQL!!)
Autor: fgb
Datum: 09.09.2011 21:43:57
Ich habe es jetzt geschafft, kapiere leider nicht so ganz, warum das so funktioniert:
select r1.firstname, r1.lastname, r1.speed, r1.id from
rundenzeit r1, rundenzeit r2
where r1.speed >= r2.speed
group by r1.firstname, r1.lastname, r1.speed, r1.id
having count(*) <= 5
order by speed
Jetzt bekomme ich die 5 schnellsten Personen.
ABER, warum muss ich r1.speed >= r2.speed machen?
Für mein Verständnis heißt das doch wörtlich:
"bei dem r1.speed langsamer (größer) als r2.speed ist".
Wäre für einen Tipp sehr dankbar!