Ergebnis 1 bis 20 von 26

Thema: [SQL] Eine bestimmte Zeile ausgeben

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    @Whiz-zarD:

    Also ich habe beide Lösungen mit Oracle 10g getestet und beide funktionieren, wobei ich bei Irians noch das '<' durch '>' ersetzen musste, da sonst der fünftkleinste Wert, statt des fünftgrößten ausgegeben wurde. ^^

    Und dead_orcs Code (edit: so wie Gekigangers) wird aus dem Grund nicht funktionieren, weil ROWNUM in dem Kontext nicht auf Gleichheit geprüft werden kann, steht auch in dem Oracle-Link, den er gepostet hat.

    Geändert von Kyuu (21.11.2009 um 13:55 Uhr)

  2. #2
    Code:
    select wert
    from 
    (
      select wert
      from tabelle
      group by wert
      order by wert desc
    )
    where rownum = 5;
    Dubletten entfernen nicht vergessen.

    Und die Aufgabe kann auch nur mit einer Unterabfrage gelöst werden. Warum, steht im Oracle Tutorial.

  3. #3
    Zitat Zitat
    Deine ist weder die performanteste noch die Korrekte, da sie überhaupt keinen Wert zurückliefert
    Das ist, kurz gesagt, Unsinn. Natürlich habe mein Query getestet und das Ergebnis war völlig korrekt. Du argumentierst also quasi an der Realität vorbei...

    Zitat Zitat
    Das kann schonmal nicht funktionieren, weil zuerst die inneren Abfragen bearbeitet werden und was soll denn da rauskommen, da er in der inneren auch die äußere benötigt, die noch nicht existiert?
    Du solltest dein Wissen über SQL bitte nochmal etwas aufbessern, bevor du solche Beinahe-Wahrheiten verkündest. Anders gesagt: Du irrst dich. Such mal nach "correlated subquery".

    Zitat Zitat
    Also ich habe beide Lösungen mit Oracle 10g getestet und beide funktionieren, wobei ich bei Irians noch das '<' durch '>' ersetzen musste, da sonst der fünftkleinste Wert, statt des fünftgrößten ausgegeben wurde. ^^
    Groß... Klein... Details! Anders gesagt: Ups, stimmt natürlich :-)

    Zitat Zitat
    Dubletten entfernen nicht vergessen.
    Hier sehe ich sogar einen Vorteil meines Ansatzes, der würde ALLE Zeilen ausgeben, die den fünftgrößten Wert beinhalten. Praktisch :-)
    (Edit: Ginge natürlich andersrum auch, einfach höchsten Wert suchen und dann alle Zeilen damit ausgeben, vermutlich sogar schneller... Wie gesagt, dieses innere Query hier dürfte kaum die schnellste Lösung sein, da müßte man sich die Logs mal anschauen).

    Geändert von Irian (21.11.2009 um 16:51 Uhr) Grund: Typo gefixt

  4. #4
    Zitat Zitat von Irian Beitrag anzeigen
    Das ist, kurz gesagt, Unsinn. Natürlich habe mein Query getestet und das Ergebnis war völlig korrekt. Du argumentierst also quasi an der Realität vorbei...
    aha. Dann redet der SQL Developer von Oracle an der Realität vorbei?
    Ich sage hier nur, was ich hier sehe und rownum hat den Wert 52, bei der Zeile, die ich ausgeben will.


    Geändert von Whiz-zarD (21.11.2009 um 18:51 Uhr)

  5. #5
    Zeig deinen Code und ich zeige dir wo dein Fehler ist. (Nicht dass ich nicht schon einen korrekten Lösungsvorschlag mit ROWNUM gepostet habe.)

  6. #6
    Zitat Zitat von Kyuu Beitrag anzeigen
    Zeig deinen Code und ich zeige dir wo dein Fehler ist.
    Code:
    select *
    from studienleistung
    where ects is not null
    order by ects desc;
    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.

    edit:
    Nach deiner Methode
    Code:
    select *
    from studienleistung s
    where ( select count(*)
            from studienleistung d
            where s.ects < d.ects) = 4;
    gibt er nicht mal ein ein Ergebnis aus.

    Ausserdem frag ich mich die ganze Zeit, was SQL großartig mit Webentwicklung zu tun hat.
    Sicherlich werden die Daten in eine SQL Tabelle gespeichert aber es gibt noch andere Anwendungsbereiche für SQL ausser Webentwicklung.

    Geändert von Whiz-zarD (21.11.2009 um 19:24 Uhr)

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •