Zeilenweise durch Tabelle

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

  • Zeilenweise durch Tabelle

    Hallo habe eine Frage.

    Datenbank ist eine Oracle 9i

    Ich habe mir mit php eine Art Record zusammen gebastelt. Nun fehlt mir nur noch das passende statement. Hab zwar eines, es funktioniert auch ist aber nicht 100% das was ich möchte.

    so eines bräuchte ich:

    select ... from .. where rownum='$nummer';

    die $nummer wird mit php eingelesen. Nur so geht das nicht, da man die entsprechenden Zeilen in der Tabelle nicht mit rownum= ansprechen kann.

    Wie spreche ich eine Zeile in sql an, wenn ich die variable nummer aus einem Textfeld mit php einlese?

  • #2
    EDIT:
    Nur so geht das nicht, da man die entsprechenden Zeilen in der Tabelle nicht mit rownum= ansprechen kann.


    ???
    verstehe ich nun nicht ganz
    sorry

    meinst Du etwa das :

    select NAME from Tabelle where nummer ='$nummer'

    ??
    Zuletzt geändert von Arni; 08.06.2005, 09:31.
    Bei Risiken und Nebenwirkungen fragen Sie Dr.Alban

    Kommentar


    • #3
      Also. Folgendes.

      Die Tabelle auf die sich das ganze bezieht hat natürlich einen PK.
      Dieser PK ist jedoch nicht fortlaufend durchnummeriert.
      Der PK besteht aus einer Mischung aus zahlen und Buchstaben.

      Nun möchte ich, das wenn ich auf den Button "nächster" meines Formulares clicke, das dann die nàchste Zeile der Tabelle in mein Formular gelesen wird.

      wäre der Pk von 1 an aufzählend durchnummeriert dann wäre alles kein Problem. Will aber keine neue Spalte an meine Tabelle anhängen

      Kann mann nicht irgendwie eine virtuell Zeile die aufsteigend nummeriert ist neben eine Tabelle hängen?

      Oder kann man das anders lösen?

      select ... from .. where rownum='$nummer';
      rownum solte hier als Synonym für die Zeilennummer stehen, die ausgewählt werden soll

      Kommentar


      • #4
        Schau dir mal mysql_result an, könnte dir weiterhelfen.

        Kommentar


        • #5
          mysql_result wird bei einer ORacle-Tabelle nicht wirklich weiterhelfen...

          Da Oracle, wenn ich mich nicht irre, kein LIMIT kennt, musst du mit ROWNUM arbeiten, evtl. ist Groß-Kleinschreibung nicht egal?
          Kannst du ROWNUM überhaupt auslesen?
          Was ist mit ROW_NUMBER()?
          Ich denke, also bin ich. - Einige sind trotzdem...

          Kommentar


          • #6
            aktuelle id: $id

            nächster: "show.php?what=next&id=". $id
            voriger: "show.php?what=prev&id=". $id

            PHP-Code:
            $id $_REQUEST['id'];
            switch (
            $_REQUEST['what'])
            {
              case 
            'next':
                
            $where "id>'$id' order by id";
                break;
              case 
            'pred':
                
            $where "id<'$id' order by id desc";
                break;
              default:
                
            $where "id='$id'";
                break;
            }
            $sql "select * from tabelle where "$where
            und denn einfach nur die erste Zeile lesen
            mein Sport: mein Frühstück: meine Arbeit:

            Sämtliche Code-Schnipsel sind im Allgemeinen nicht getestet und werden ohne Gewähr auf Fehlerfreiheit und Korrektheit gepostet.

            Kommentar


            • #7
              Hallo Titus,

              hab das so ähnlich wie du dort beschrieben hast gelöst.
              Nur mit anderen schleifen. Aber es funzt

              Nur das Problem ist dann folgendes.

              Ich will dem Benutzer anzeigen wie viele Datensätze es gibt(ist ja noch einfach: einfach ein select count machen) und an welcher Stelle (an welcher Zeile) er sich momentan befindet.

              Genau da liegt das Problem. Bei meinem Record ist auch noch ein Eingabefenster dabei. Dort kann man momentan den PK eingeben und es werden dann alle Werte zu diesem Pk im Formular angezeigt.

              Es sollte aber besser eine Zeilenzahl eingegeben werden.

              z.B 129 (steht füR Zeile 129). So würde man immer sehen wie viele datensätze es noch gibt.
              Die ID meiner Tabelle ist aber nicht "sprechend". Somit weiss ich gar nicht wo ich mich in der Tabelle befinde wenn ich den PK in das Eingabefeld eingebe.

              Ein Record wie ich ihn möchte ist zum Beispiel in Access zu finden. Er ist "zeilenbasiert" aufgebaut. Springt einfach von Zeile zu Zeile. Auch ein Quereinstieg mittels Eingabefeld ist möglich

              Kommentar


              • #8
                Original geschrieben von mrhappiness
                Kannst du ROWNUM überhaupt auslesen?
                Code:
                SELECT ROWNUM rownum1
                FROM tabelle
                was gibt das?
                Ich denke, also bin ich. - Einige sind trotzdem...

                Kommentar


                • #9
                  SELECT ROWNUM rownum1 FROM tabelle
                  das klappt. Er zählt alle Zeilen fortlaufen durch.


                  Aber weder das

                  select clientcode,ROWNUM as rownum1 from client where rownum1=4;
                  ERROR at line 1:
                  ORA-00904: invalid column name

                  noch das

                  select clientcode,ROWNUM from client where rownum=4;$
                  no rows selected

                  funktioniert. Kann rownum nur mit <4 oder >4 ansprechen. Nicht aber mit =4

                  Kommentar


                  • #10
                    und BETWEEN bzw. > 3 AND < 4?

                    <schauder>Oder du selektierst alles und zählst mit PHP</schauder>
                    Ich denke, also bin ich. - Einige sind trotzdem...

                    Kommentar


                    • #11
                      Meiner Erinnerung nach wird ROWNUM on the fly bei der Generierung der Ergebnisliste erstellt ... (im Gegensatz zur ROWID) ... also logisch das bei einer Eingrenzung auf nur ein Tupel niemals eine ROWNUM von 4 erreicht wird ...

                      ... eine Lösung via VIEW dürfte allerdings funktionieren ...
                      carpe noctem

                      [color=blue]Bitte keine Fragen per EMail ... im Forum haben alle was davon ... und ich beantworte EMail-Fragen von Foren-Mitgliedern in der Regel eh nicht![/color]
                      [color=red]Hinweis: Ich bin weder Mitglied noch Angestellter von ebiz-consult! Alles was ich hier von mir gebe tue ich in eigener Verantwortung![/color]

                      Kommentar


                      • #12
                        SQL> select clientcode,ROWNUM from client where rownum>3 and rownum<5;

                        no rows selected

                        SQL> select clientcode,ROWNUM from client where rownum between 3 and 5;

                        no rows selected

                        Kommentar


                        • #13
                          Original geschrieben von galaxy2
                          SQL> select clientcode,ROWNUM from client where rownum>3 and rownum<5;

                          no rows selected

                          SQL> select clientcode,ROWNUM from client where rownum between 3 and 5;

                          no rows selected

                          Schau mal was goth geschrieben hatte

                          die rownum kannst Du so nicht abfragen.
                          Die Rowid ist dagegen immer eindeutig.
                          Du solltest Dir einfach eine Spalte id anlegen welche eindeutig ist und
                          Dein Problem ist gelöst oder aber du nummeriest die Werte in einer Schleife in php, damit könntest Du es auch lösen

                          Wobei , machst Du es denn überhaupt mit PHP oder Oracle Forms ???
                          Zuletzt geändert von Arni; 08.06.2005, 12:14.
                          Bei Risiken und Nebenwirkungen fragen Sie Dr.Alban

                          Kommentar


                          • #14
                            Ich habe mit php und Html Formularen Masken erstellt
                            Die Daten kommen aus einer Oracle9i Datenbank

                            Kommentar


                            • #15
                              Kennt Oracle HAVING?
                              mein Sport: mein Frühstück: meine Arbeit:

                              Sämtliche Code-Schnipsel sind im Allgemeinen nicht getestet und werden ohne Gewähr auf Fehlerfreiheit und Korrektheit gepostet.

                              Kommentar

                              Lädt...
                              X