mehrere Maximalwerte

  • Hi. Also ich habe die Aufgabe aus der Relation Buch (ISBN, Titel, Seiten, Jahr) die drei dicksten Bücher (die mit der größten seitenanzahl) herauszufinden. dabei können es aber mehr sein (es kann ja sein, dass zwei bücher die gleiche seitenanzahl haben). wenn ich zb. habe 200, 200, 100, 50, 40, 10, 20 soll rauskommen: 200, 200, 100, 50

    allerdings hab ich keine ahnung, wie ich das in SQL realisieren soll

    ich meine

    SELECT Titel
    FROM Buch
    HAVING MAX seiten

    geht ja nicht, weil da kommt nur ein wert raus. hat jemand eine idee für mein problem?

    Wer FU sagt, muss auch T sagen

  • Absteigend sortieren und dann die ersten 3 ergebnisse nehmen.

    SELECT Titel FROM Buch ORDER BY seiten DESC LIMIT 3

    limit ist datenbankspezifisch. Die meisten Datenbanken haben aber dieses feature, schaut nur immer ein wenig anders aus.

  • im mysql 5.0 funktionierts zumindest so:

    SQL
    SELECT b1.titel FROM buch AS b1 JOIN (SELECT b2.seiten FROM buch AS b2 GROUP BY b2.seiten ORDER BY b2.seiten DESC LIMIT 3) AS b3 ON b1.seiten = b3.seiten;

    aber es gibt sicher auch noch andere/mehrere verschiedene varianten je nach dbms

  • Absteigend sortieren und dann die ersten 3 ergebnisse nehmen.

    SELECT Titel FROM Buch ORDER BY seiten DESC LIMIT 3

    limit ist datenbankspezifisch. Die meisten Datenbanken haben aber dieses feature, schaut nur immer ein wenig anders aus.

    Werden hier nicht dann am Schluss "nur" 3 Werte ausgegeben? Das heißt, auch, wenn ich zwei Bücher mit der gleichen Seitenanzahl habe, wo ja dann 4 werte rauskommen müssten, gibt er 3 aus?

    Wer FU sagt, muss auch T sagen

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!