Top Ten

Hallo,

ich hab mich jetzt extra hier angemeldet, weil ich auf eine Antwort hoffe. :slight_smile: Ich habe nämlich ein Problem mit einer Select-Anweisung.

Also… ich hab eine Datenbank für ne (ausgedachte g) Bibliothek gemacht und dort kann man sich auch Bücher reservieren lassen und genau da habe ich kein Problem. Denn ich möchte die 10 häufigsten Reservierungen ausgegeben haben. Also welches Buch, wie oft reserviert wurde und halt auf 10 Stück davon beschränkt.

Bisher habe ich

select top(10) * 
    count(r.resID),
    b.title
from reservation r left outer join book b on r.bookID = b.bookID
group by r.bookID, b.title
order by 1 desc

Wenn ich das top(10) * wieder wegmache (das hab ich erst irgendwie durch googlen gefunden), dann bekomme ich alle Reservierungen ausgegeben nach der Häufigkeit sortiert ausgegeben. Wie mach ich das nun richtig?

So wie es jetzt ist, kommt nämlich der Fehler “no authorized routine named “TOP” of type “FUNCTION” havin compatible arguments was found”.


Danke schon mal ^-^

PostgreSQL kennt keine top() - Funktion und die Fehlermeldung schaut auch nicht nach PG aus. Was Du suchst ist als LIMIT bekannt. PG 8.4 wird weitergehende Funktionen (CTE) haben, wie z.B. Ranking-Funktionen.

Andreas

Danke für deine Antwort.
Aber wie genau mit Limit? Also an welche Stelle muss ich das schreiben usw.?

PostgreSQL: Documentation: Manuals: PostgreSQL 8.1: SELECT

Kommt so ziemlich ans Ende hin.

Du solltest, mal ganz allgemein gesprochen, Deine Arbeitsweise überdenken. Dinge wie Google oder die Hilfe hier im Forum solltest Du als Hilfe, nicht als Lösung ansehen. Die Bereitschaft hier, Deine Hausaufgaben zu machen, ist nicht allzu hoch, wohl aber, Dich in die richtige Richtung zu schubsen. Und diese Richtung ist fast immer die Doku. Hint: diese hat eine Suchfunktion. Und mit dieser Doku und meinem Hinweis auf Limit liefert die Suche gleich beim ersten Treffer das, was Dir helfen würde.

Andreas