Ankündigung

Einklappen
Keine Ankündigung bisher.

vorheriger/nächster datensatz

Einklappen

Neue Werbung 2019

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

  • vorheriger/nächster datensatz

    Hallo ich habe ein Problem:
    ich habe eine Select-Anweisung mit zwei where-Bedingungen

    $abfrage = "SELECT * FROM whiskysorten where Kriterium = gut && ID=100

    (PS: Die ID ist eindeutig, so dass in der Abfrage eigentlich redundant und nur zur Verdeutlichung angegeben.)

    wie bekomme ich den vorherigen bzw. nächsten Datensatz zur ID 100 der das Kriterium=gut erfüllt?

    D.h, ich möchte in der Auswahl (Kriterium) einer Tabelle blättern.

    Muss ich hierfür eine Hilfstabelle erstellen oder geht das auch anders?


  • #2
    Zitat von hamburger Beitrag anzeigen
    wie bekomme ich den vorherigen bzw. nächsten Datensatz zur ID 100 der das Kriterium=gut erfüllt?
    In dem du zunächst eine Sortierreihenfolge definierst (derzeit enthält deine Query noch gar keine Sortierung, also gibt es auch noch keinen „vorherigen“ oder „nächsten“ Datensatz!), und dir dann unter zu Hilfe nahme von ORDER BY und LIMIT jeweils nur den einen Datensatz liefern lässt, der innerhalb dieser Sortierung vor/nach dem Vergleichsdatensatz kommt.

    Kommentar


    • #3
      Hallo ChrisB,
      danke für deine schnelle Antwort.
      Bei meiner Abfrage:
      $abfrage = "SELECT * FROM whiskysorten where Kriterium = gut && ID=100
      bekomme ich nur einen Datensatz zurück, weil es ID=100 nur einmal gibt. Da ist nichts zu sortieren.

      Habe inzwischen folgendes gefunden:
      $x = 5;
      mysql_query("SELECT * FROM `tabelle` WHERE `id`>".$x." ORDER BY `id` ASC LIMIT 1");
      mysql_query("SELECT * FROM `tabelle` WHERE `id`<".$x." ORDER BY `id` DESC LIMIT 1");

      heißt dass, ich kann somit den vorherigen/nächsten Satz selektieren obwohl nur ein Datensatz meinem Kritrium entspricht?

      Kommentar


      • #4
        PS: Habe < und >-Zeichen übersehen. Scheint also zu funktionieren.
        Sind aber 3 Querys. Geht das auch mit nur einem?

        Kommentar


        • #5
          Zitat von hamburger Beitrag anzeigen
          Bei meiner Abfrage:
          $abfrage = "SELECT * FROM whiskysorten where Kriterium = gut && ID=100
          bekomme ich nur einen Datensatz zurück, weil es ID=100 nur einmal gibt. Da ist nichts zu sortieren.
          Bei nur einem Datensatz nicht, nein.

          Du willst aber einen „vorherigen“ und einen „nächsten“ Datensatz ermitteln - und dazu brauchst du eine Sortierung.

          Habe inzwischen folgendes gefunden:
          Prinzipiell korrekt - bis auf die Tatsache, dass eine ID einzig und allein zur Identifizierung eines Datensatzes dienen sollte, nicht zur Herstellung einer Sortierung.

          heißt dass, ich kann somit den vorherigen/nächsten Satz selektieren obwohl nur ein Datensatz meinem Kritrium entspricht?
          Hast du meinen Hinweis verstanden, hast du den gefundenen Beispielcode verstanden? Klingt irgendwie nicht so.

          Wenn du wissen willst, wer vor und wer hinter Person XY in der Schlange steht - natürlich musst du dann zunächst nur Person XY identifizieren können. Vor und Hinter ergeben sich, wie gesagt, aus der Sortierung.

          Kommentar

          Lädt...
          X