Announcement

Collapse
No announcement yet.

Wie finde ich den zweit kleinsten Wert in einer Tabellenspalte?

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Wie finde ich den zweit kleinsten Wert in einer Tabellenspalte?

    Hallo zusammen,

    kann mir jemand sagen wie ich den zweit kleinsten Wert aus einer Tabellenspalte ausgeben kann?

    So mache ich ich es wenn ich den kleinsten finden will:

    PHP Code:
     select min(price_detail_priceminprice from dbo_price_detail where price_artikel_id '$price_artikel_id' 
    Wenn in der Spalte also die Werte

    22,50
    23,80
    19,10
    15,30

    stehen, möchte ich die 19,10 haben, also den zweit kleinsten Wert.

    Danke!

  • #2
    Step 1: Sortieren
    Step 2: den n-ten Wert verwenden.

    Das geht bei mysql sicher mit "limit 2" dann andersrum sortieren oder sowas.

    Ich würde wahrscheinlich bei mysql die Fähigkeit nutzen, Variablen im SQL verwenden zu können und mir eine virtuelle Spalte mit fortlaufende Nummer herzustellen. Kriterium ist dann einfach nur noch "where laufendeNummer=2"
    Gruß, defo

    Comment


    • #3
      [HIGHLIGHT=SQL] SELECT price_detail_price FROM dbo_price_detail WHERE price_artikel_id = '$price_artikel_id' ORDER BY price_detail_price ASC LIMIT 1,1[/HIGHLIGHT]

      Disclaimer : Nicht getestet nur der Doku entnommen

      Edit : DESC in ASC geändert
      Last edited by Ralf Jansen; 26.10.2017, 13:56.

      Comment


      • #4
        Ach, das wusste ich gar nicht mit dem Offset.
        So einfach!
        Gruß, defo

        Comment


        • #5
          Cool das muss ich auch mal testen ob unsere Oracle das kann

          Comment


          • #6
            Oracle kennt kein Limit

            Code:
            select * from ( 
              select a.*, ROWNUM rnum from (
                DEIN_SQL_MIT_ORDER  
                )
              a where ROWNUM < 3 
              ) 
            where rnum  > 1;
            Last edited by Christian Marquardt; 27.10.2017, 06:42.
            Christian

            Comment


            • #7
              Originally posted by Christian Marquardt View Post
              Oracle kennt kein Limit

              Code:
              select * from ( 
                select a.*, ROWNUM rnum from (
                  DEIN_SQL_MIT_ORDER  
                  )
                a where ROWNUM < 3 
                ) 
              where rnum  > 1;
              Ja, sowas in der Art hatte ich mit meinem ersten Post im Kopf, nur halt mit Limit (ohne Offset). Offenbar kenne ich mySQL nicht gut genug für solche Beiträge.
              Gruß, defo

              Comment


              • #8
                Da könnte sich Oracle mal was abgucken......mit dem Limit
                Christian

                Comment


                • #9
                  Offenbar kenne ich mySQL nicht gut genug für solche Beiträge.

                  Ich habe MySql noch nie wirklich benutzt. Ich habe aber halt genug allgemeine Erfahrung der Doku die richtige Frage zu stellen um schnell das passende zu finden

                  Comment


                  • #10
                    Originally posted by Christian Marquardt View Post
                    Da könnte sich Oracle mal was abgucken......mit dem Limit
                    Haben sie ja, aber natürlich anders (ab 12c)
                    Code:
                    [ OFFSET offset { ROW | ROWS } ]
                    [ FETCH { FIRST | NEXT } [ { rowcount | percent PERCENT } ]
                        { ROW | ROWS } { ONLY | WITH TIES } ]
                    @ralf
                    Doku lesen bwz. bei Bedarf benutzen ist natürlich grundsätzlich der beste Tipp/ best practise.
                    Aber wir wären ja in vielen Foren fast "arbeitslos", wenn jeder das einfach machen würde (und die Doku qualitativ geeignet ist)
                    Vielleicht ist auch etwas Arroganz dabei, wenn man meint ein (bekanntes) Verfahren von Oracle sei StateOfTheArt.
                    Last edited by defo; 27.10.2017, 13:27.
                    Gruß, defo

                    Comment


                    • #11
                      Oracle ist irgendwie nie StateOfTheArt

                      Comment


                      • #12
                        Originally posted by fanderlf View Post
                        Oracle ist irgendwie nie StateOfTheArt
                        Wenn das ein Scherz war, okay, Wenn nicht, würde mich eine andere Datenbank mit ihren StateOfTheArt Features sehr interessieren, meinetwegen auch historisch.
                        Gruß, defo

                        Comment


                        • #13
                          Na das war jetzt vielleicht etwas übertrieben State of the art würde ich sagen ist Software die heutzutage die großen Player benutzen. Facebook, Google, Amazon, Netflix, Twitter... Gut ich weiß Banken setzen auf Oracle und in diesem Gebiet sind sie vermutlich auch die beste Wahl. Aber modern ist Oracle nicht wirklich. Die Oracle Datenbank ist ein monolithisches Ungetüm, bei dem selbst vermutlich Oracle in den Tiefen nicht mehr wirklich durchblickt. Gerade wenn es in Richtung Microservices geht, sind kleine, schnell aufzusetzende und leicht zu verwaltende Datenbanken eher gefragt, als Kolosse die noch dazu extrem viel Geld kosten.

                          Das ist jetzt aber eine durch meine Erfahrung geprägte Meinung. Ich spreche ausdrücklich nicht für die Allgemeinheit

                          Comment


                          • #14
                            Gut, state of the art ist für mich etwas anderes als modern. Ein konkretes Beispiel: Analytic Functions gibt es unter Oracle in einer Funktionsvielfalt und Leistungsfähigkeit seit Version 8 - so viel Jahre zurück kann ich kaum rechnen- wie sie Jahre später nun auch MS SQL Server (2014 oder so) erreicht hat. Und state of the art darf m.E. etwas kosten. Modern kann state of the art sein, aber nicht jeder Hipster Kram ist state of the art, nur weil er modern ist.
                            Aber es liegt mir fern, Werbung für Oracle zu machen (inkl mySQl / facebook etc.) Zu einem guten Produkt gehört nicht nur die Funktion, auch der Preis, der Service, die Lizenzbedingungen usw.
                            Dennoch, ich kann in Oracle Database letztlich vollfunktionsfähige Anwendungen implementieren, die ich dann per SQL, per Web Anwendung oder wie auch immer bedienen kann. So durchgängig und performant (und sogar recht kompatibel) gelingt das vergleichbar m.E. nur mit postgresql, was mir an der Stelle ebenfalls bemerkenswert erscheint. Das ist offenbar etwas aus der Mode, jeder hat so seine Präferenzen.

                            Ein spannendes Thema und sehr vielschichtig. Auch ich habe hier natürlich nur meine Sichtweise anklingen lassen.
                            Gruß, defo

                            Comment

                            Working...
                            X