Zeilenweise durch Tabelle

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • #16
    probiere mal:

    select clientcode, myrow from (select clientcode, rownum myrow from client oder by whatever) where myrow between 3 and 5

    Kommentar


    • #17
      @ asp2php

      Danke, das war die Lösung:
      Nun kann ich sogar mit = arbeiten un kann das between weglassen.

      Danke auch an alle anderen für die schnellen Antworten

      Kommentar


      • #18
        Was spricht den gegen
        PHP-Code:
         SELECT bla,bla
        FROM tabelle
        WHERE bedingung
        LIMIT $offset
        ,
        und linken mit einem inkrementellen $offset in PHP z.B

        PHP-Code:
        $offset $_GET['seite'];
        ....
        print 
        "<a href='skript.php?seite=".($offset-1)."'>voriger</a>";
        print 
        "<a href='skript.php?seite=".($offset+1)."'>nächster</a>"
        hält das Ergebnis klein und spart Speicher
        chansel0049
        ----------------------------------------------------
        if you've reached the bottomline - dig further!
        Übersetzer gesucht? http://www.babelport.com

        Kommentar


        • #19
          chansel0049, was spricht dagegen, dass du den Thread gründlich durchliest? Was hat denn LIMIT bei einer Oracle DBMS zu suchen

          Kommentar


          • #20
            hmh,

            nicht gelesen, richtig!
            chansel0049
            ----------------------------------------------------
            if you've reached the bottomline - dig further!
            Übersetzer gesucht? http://www.babelport.com

            Kommentar


            • #21
              Das war doch nicht die Lösung.
              Zwar klappt es nun das ich mit meinem Record alleine auf und ab zählen kann, jedoch gibt es nun ein neues Problem.

              Beispiel für Zurückbutton
              select clientcode, max(row) from
              (select clientcode, rownum as row from client
              order by clientcode asc)
              where row<'$nummer' ";


              funzt nicht. Wieso?
              Den clientcode würde ich dann einer php-Variablen zuordnen


              Muss mit min() und max() arbeiten, da ich die nächst kleinere und nächst grössere Zahl für meinen Record übergeben will.

              Das gehtohne Clientcode)

              select min(myrow)from
              (select rownum as myrow from client
              order by clientcode asc) where myrow>'$nummer'

              Ich muss aber den Clientcode mit in die Query aufnehmen, da ich diesen an ein sehr grosses selectstatement weitergeben möchte.
              Wenn ich statdessen die rownum an das grosse statement übergebe, müsste ich dieses statement auch in eine Inlineview verpacken. Dies setzt jedoch die Performance nahezu auf null.

              Kommentar


              • #22
                Da fehlt ein GROUP BY, meinst du nicht?
                Ich denke, also bin ich. - Einige sind trotzdem...

                Kommentar


                • #23
                  Hatte schon ein group by verwendet.

                  Weder das:

                  select clientcode, max(row) from
                  (select clientcode, rownum as row from client order by clientcode asc)
                  where row<5 group by clientcode;

                  Noch das funzt:

                  select clientcode, max(row) from
                  (select clientcode, rownum as row from client order by clientcode asc)
                  where row<5 group by row;

                  Oder stell ich mich jetzt im Moment einfach nur doof an.

                  Kommentar


                  • #24
                    Könnte mir hier bitte jemand sagen, wenn er es den weiss,
                    wohin ich ein group by setzen muss?

                    Kommentar


                    • #25
                      z.B.

                      ... group by clientcode


                      denn sobald du Aggregatfunktion einsetzst verlangt die meistens DBMS, dass du nach allen Spalten, die nicht im A-Fkt. angegeben sind, gruppieren.

                      P.S. du möchtest dich ein bisschen mehr mit SQL auseinandersetzen

                      Kommentar


                      • #26
                        @asp2php

                        das mit den Aggregatfunktion und group by wusste ich schon.

                        jedoch funktioniert es in diesem Fall nicht

                        Weder das:

                        select clientcode, max(row) from
                        (select clientcode, rownum as row from client order by clientcode asc)
                        where row<5 group by clientcode;

                        Noch das funzt:

                        select clientcode, max(row) from
                        (select clientcode, rownum as row from client order by clientcode asc)
                        where row<5 group by row;

                        oder sitzt es nur an der falschen Stelle? Hab aber eigentlich schon alles durchgetestet

                        Kommentar


                        • #27
                          schon mal von reserved words gehört , row ist ein davon

                          Kommentar


                          • #28
                            Jetzt läuft dieses statement zwar durch:

                            SQL> select clientcode, max(myrow) from
                            2 (select clientcode, rownum as myrow from client order by clientcode asc)
                            3 where myrow<5 group by clientcode;

                            CLIENTCODE MAX(MYROW)
                            ------------------------- ----------
                            c1 1
                            c2 2
                            c3 3
                            c4 4

                            es liefert mir aber nicht das was ich möchte. Ich hätte gerne dass das raus kommt: Tut es aber nicht

                            CLIENTCODE MAX(MYROW)
                            ------------------------- ----------
                            c4 4

                            Kommentar


                            • #29
                              SQL> select clientcode, max(myrow) AS max_row from
                              2 (select clientcode, rownum as myrow from client order by clientcode asc)
                              3 where myrow<5 group by clientcode
                              ORDER BY max_row DESC LIMIT 0,1;


                              Als Idee, nicht getestet.....

                              Kommentar


                              • #30
                                Original geschrieben von prego

                                Als Idee, nicht getestet.....
                                kannste auch nicht testen , it's oracle

                                @galaxy, da oracle weder top N noch limit hat, würde ich so machen:

                                ... where myrow<5 group by clientcode order by max(myrow) desc

                                dann nur den 1. DS auslesen

                                Kommentar

                                Lädt...
                                X