zeilenposition des eintrags

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

  • zeilenposition des eintrags

    Hi,

    wie bekomme ich heraus, in der wievielten position der gefundene datensatz ist, z.b.



    Spalte1 ....
    "Hans"
    "Joseph"
    "Dieter"
    "Kurt"

    SELECT * FROM tabelle WHERE Spalte1="Dieter"

    und jetzt will ich herausfinden, in der Wievielten Zeile Dieter ist (hier: 3)

    p-flash

  • #2
    array_search mit php. mit mysql arbeitest du mit einer id, die kann sich ändern.

    gruß
    peter
    Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
    Meine Seite

    Kommentar


    • #3
      lege doch eine spalte "id" an und schreibe zu dieter - 4 und zu hans - 1.
      dann musst du nur den wert dieser spalte auslesen.

      Kommentar


      • #4
        Wenn hans gelöscht wird, ist Dieter nicht mehr 3 sondern 2.

        Kommentar


        • #5
          im allgemeinen garantiert dir aber keine rdbms, dass die datensätze bei der nächsten abfrage auf ein mal in einer anderen reihenfolge zurückgegeben werden.

          zur not kann man auch manuell "nachrücken", aber auch das ist i.d.r. unnötig. welche rolle soll das denn bitte spielen, an welcher position die db den eintrag "dieter" gerade zurückgegeben hat?

          Kommentar


          • #6
            Original geschrieben von p-flash
            Wenn hans gelöscht wird, ist Dieter nicht mehr 3 sondern 2.
            Gut erkannt, deshalb ist diese Möglichkeit auch weitgehend untauglich :-)


            Aber auch die Fragestellung ist noch sinnfrei, so lange gar keine Sortierungsvorschrift angegeben wurde - dann ist die Reihenfolge der Datensätze nämlich zufällig. (Sie mag mit dem übereinstimmen, was du haben willst, muss es aber nicht. Sie kann es auch eine zeitlang tun, irgendwann dann nicht mehr ...)

            Also erst mal die Sortierung festlegen.


            Und dann das ganze am einfachsten mit zwei Queries lösen.
            Eine Query ermittelt den Datensatz, die andere ermittelt die Anzahl aller Datensätze "kleiner gleich" dem gesuchten unter Einbeziehung der festgelegten Sortierung.

            Und auch das setzt natürlich voraus, dass auf der zu durchsuchenden Spalte ein Unique Index liegt, sonst muss das Ergebnis ja nicht eindeutig sein.
            I don't believe in rebirth. Actually, I never did in my whole lives.

            Kommentar


            • #7
              Sorry, habe wahrscheinlich zu ungenau erklärt.

              Also ich habe eine Spalte id welche eindeutig ist. Diese wird mittels auto_increment automatisch verwaltet. D.h. eine genau Reihenfolge steht also fest. Da ich dem Benutzer ausgeben möchte um den wievielten Beitrag es sich handelt, kann ich mich nicht auf mein id fehlt verlassen, da ja durch's löschen Lücken entstehen. Daher meine Frage.

              Habe es jetzt so gelöst:
              PHP-Code:
              $queryResult mysql_query("SELECT COUNT(*) AS prev_entries_num FROM archiv_entries WHERE id < $entryId ORDER BY id");
              $row mysql_fetch_assoc($queryResult);
                  
              $entryNumber $row["prev_entries_num"] + 1

              Wofür das ganze genau ist, könnt ihr hier sehen.

              user und password: guest

              p-flash

              Kommentar


              • #8
                wenn du den Benutzer löscht. dann musst du doch nich mehr ausgeben wieviel Beiträge er hat?

                Wieso kannst du dich auf dein ID Feld nicht verlassen?
                Für Rechtschreibfehler übernehme ich keine Haftung!

                Kommentar


                • #9
                  Original geschrieben von Damian1984
                  wenn du den Benutzer löscht. dann musst du doch nich mehr ausgeben wieviel Beiträge er hat?

                  Wieso kannst du dich auf dein ID Feld nicht verlassen?
                  Nicht dere benutzer, sondern der Eintrag wird gelöscht. Das Beispiel oben war nur um zu zeigen was ich meine mit dem id-problem. Schau dir den link an, weiter oben an.

                  p-flash

                  Kommentar


                  • #10
                    Original geschrieben von p-flash
                    Schau dir den link an, weiter oben an.
                    Und du meinst, dieses Flash-Gehampel wäre selbsterklärend?
                    I don't believe in rebirth. Actually, I never did in my whole lives.

                    Kommentar


                    • #11
                      naja, viele Funktionen hat es ja nicht. Sollte nur zeigen, wieso ich wissen möchte der wievielte eintrag es ist.

                      >welche rolle soll das denn bitte spielen, an welcher position die db den eintrag "dieter" gerade zurückgegeben hat?<

                      oben links wird die Nummer des Eintrags gezeigt. Selbst wenn die id 40 wäre könnte es sein dass es der einzige eintrag ist, also wird 1 angezeigt.

                      p-flash

                      Kommentar


                      • #12
                        Sorry ich komm damit auch absolut nicht zurecht und verstehe nicht dein Problem?

                        Du hast doch für jeden Eintrag eine Id? hast du?

                        du bekommst niemals wirklich sicher heraus in welcher Zeile das ist, dafür sind Ids gut.
                        Für Rechtschreibfehler übernehme ich keine Haftung!

                        Kommentar


                        • #13
                          ACHSO!!!!
                          COUNT(ID) WHERE ID <= x
                          Für Rechtschreibfehler übernehme ich keine Haftung!

                          Kommentar


                          • #14
                            >erstehe nicht dein Problem?<

                            Das problem ist doch bereits gelöst?!?! Habe doch weiter oben gezeigt wie ich es gelöst habe. Intern mache ich auch alles mit id's aber der benutzer soll nicht angezeigt bekommen: Eintrag 23 und wenn er auf den nächsten drück Eintrag 41 weil alle anderen dazwischen gelöscht wurden. Der Eintrag mit der id 41 wäre in diesem Fall der zweite Eintrag der angezeigt wird, also soll der benutzer eine 2 angezeigt bekommen. Wie gesagt, das alles dient nur der ansicht, in der Datenbank benutze ich id's.

                            p-flash

                            Kommentar


                            • #15
                              hehe, <= mach natürlich mehr Sinn, statt es später zu inkrementieren!

                              p-flash

                              Kommentar

                              Lädt...
                              X