[SQL allgemein] Vorgänger -und Nachfolgerdatensatz ermitteln?!

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

  • [SQL allgemein] Vorgänger -und Nachfolgerdatensatz ermitteln?!

    Hallo alle zusammen,
    ich habe eine Tabelle wo das Datum als String aus einem Phpscript gespeichert wird, in der Form "20.06.2007", ein Primärschlüssel besitzt die Tabelle nicht, auch keine ID, das Datum ist sogesehen das einzige wonach man sich richten kann. Eine Datum kommt jeweils nur einmal in der Tabelle vor.

    In meinem Phpscript kann ich jeweils immer ein beliebiges Datum auswählen z.B. den 16.09.2004, wie bekomme ich jetzt den Vorgänger und Nachfolger vom diesem Datum das in der MySQL-Tabelle gespeichert ist raus, ohne dabei das Datum mittels PHP zu manipulieren?; sprich den 15.09.2004 und den 17.09.2004.

    Ich denke mal dafür muss nur die SELECT Abfrage geändert werden?!? Aber wie und was?!

    Meine aktuelle Abfrage sieht so aus:
    PHP-Code:
    mysql_query("SELECT user FROM daten WHERE datum='$datum_now'"); 

  • #2

    Code:
    SELECT ... 
    WHERE datum > heute
    ORDER BY datum ASC
    LIMIT 1
    mit "<"/">" bzw. ASC/DESC nach belieben anpassen.

    Kommentar


    • #3
      Original geschrieben von penizillin

      Code:
      SELECT ... 
      WHERE datum > heute
      ORDER BY datum ASC
      LIMIT 1
      mit "<"/">" bzw. ASC/DESC nach belieben anpassen.
      Vielen Dank!

      Man oh man, darauf hätte ich auch selbst kommen können, ich dachte eigentlich aber das MySQL keine 2 Strings nach ihren Wertinhalt vergleichen kann, weil es eben Strings sind und dazu noch mit Punkten getrennt, ich dachte das kann man nur halt mit INT, FLOAT, DATE... als Feldtyp machen.

      Kommentar


      • #4
        mooooment. von welchem typ ist denn bite deine spalte "datum"?

        Kommentar


        • #5
          Original geschrieben von penizillin
          mooooment. von welchem typ ist denn bite deine spalte "datum"?
          VARCHAR, darum wundert es mich ja gerade das es trotzdem geht , obwohl es ja Strings sind.

          Kommentar


          • #6
            das es falsch ist, solltest du selbst einsehen. für sowas gibt es datentypen, z.b. DATE oder DATETIME. darauf ist die "kleiner/größer" relation in natürlicher weise definiert.

            bei varchar ist es eher ein zufall, dass es funktioniert.
            denn darauf ist die "kleiner/größer" relation - die lexikografische ordnung.

            Kommentar


            • #7
              Das Problem ist, ich habe eine gegebene Datenbank und Tabelle, in der ich nichts ändern kann bzw. darf.
              Ich muss halt nur die Werte auslesen, und sie dann in PHP weiterverarbeiten!

              Gibts es sonst vielleicht eine andere Möglichkeit es SQL-Intern zu regeln, und nicht von PHP aus?
              Zuletzt geändert von goodlike; 02.06.2007, 19:40.

              Kommentar


              • #8
                order by + string funktionen (s. manual), insb. substr().

                OffTopic:
                wahsaga hat's letztens auf den punkt gebracht mit "ich darf nichts ändern"...

                Kommentar

                Lädt...
                X