Norbert: order by datum aber es funktioniert nicht !

Das ist der Code !

$abfrage = "SELECT date_format(datum,'%d.%m.%Y') AS datum, headline, info, kategorie FROM news ORDER BY datum LIMIT 15";

aber bis jetzt sind 3 einträge drin in der reihen folge

04.01.2008 -  SVWW - Eintracht Frankfurt

16.10.2007 -  SVWW - FSV Mainz 05 ausverkauft !!

18.02.2008 -  SVWW vs. Kaiserslautern ausverkauft !

aber das ist ja nicht korekt !! wieso funktoniert das nicht ?

mfg Norbi

  1. Grüße,

    $abfrage = "SELECT date_format(datum,'%d.%m.%Y') AS datum, headline, info, kategorie FROM news ORDER BY datum LIMIT 15";

    ehm.. syntax ist brutel - spaltennmen gehören in
    das ist schift+taste links vom backspace.

    MFG
    bleicher

    --
    __________________________-
    Menschen an sich , sind nicht schlecht - es sind nur ihre Taten (c).
    Lieber bereuen gesündigt zu haben, als nicht sündigen und es später trotzdem bereuen.
    Boccaccio
    1. Hi there,

      ehm.. syntax ist brutel - spaltennmen gehören in

      nur wenn der Spaltenname ein reserviertes Wort ist oder Sonderzeichen enthält. Im übrigen hat das mit seiner Frage (wie so oft) nichts zu tun...

      1. Grüße,

        nur wenn der Spaltenname ein reserviertes Wort ist oder Sonderzeichen enthält.

        kann es variieren? xampp den ich nutze verträgt es zB scheinbar nicht ohne.

        MFG
        bleicher

        --
        __________________________-
        Menschen an sich , sind nicht schlecht - es sind nur ihre Taten (c).
        Lieber bereuen gesündigt zu haben, als nicht sündigen und es später trotzdem bereuen.
        Boccaccio
  2. Hallo,

    $abfrage = "SELECT date_format(datum,'%d.%m.%Y') AS datum, headline, info, kategorie FROM news ORDER BY datum LIMIT 15";

    04.01.2008 -  SVWW - Eintracht Frankfurt
    16.10.2007 -  SVWW - FSV Mainz 05 ausverkauft !!
    18.02.2008 -  SVWW vs. Kaiserslautern ausverkauft !

    aber das ist ja nicht korekt !! wieso funktoniert das nicht ?

    was heißt "nicht korrekt"? Wenn die Spalte "datum" ein reines Textfeld ist, ist diese Sortierung vollkommen korrekt! Wenn du nach Datum sortieren willst, benutze entweder ein Feld vom Typ Datum, oder verwende das Datumsformat nach DIN 5008 (YYYY-MM-DD), das sich auch als String sauber sortieren lässt.

    Ciao,
     Martin

    --
    Gott hilft niemandem, er erfreut sich nur an unseren Leiden.
      (Ashura)
  3. Hi,

    "SELECT date_format(datum,'%d.%m.%Y')

    Du hast als eine Spalte, die auf den Bezeichner datum hoert.

    AS datum,

    Hier ueberschreibst du diesen Bezeichner aber - und weist ihn dem *formatierten* Datum zu, welches du gerade erzeugt hast.

    headline, info, kategorie FROM news
    ORDER BY datum LIMIT 15"

    Und eben dieses Format wird also hier zur Sortierung herangezogen.

    aber bis jetzt sind 3 einträge drin in der reihen folge

    04.01.2008 -  SVWW - Eintracht Frankfurt

    16.10.2007 -  SVWW - FSV Mainz 05 ausverkauft !!

    18.02.2008 -  SVWW vs. Kaiserslautern ausverkauft !

    aber das ist ja nicht korekt !!

    Doch, ist es - '04' ist kleiner als '16', und '16' ist kleiner als '18'.

    wieso funktoniert das nicht ?

    Weil Computer nicht das machen, was du dir wuenschst, sondern das, was du ihnen sagst.
    Weil du nicht den Inhalt deiner datum-Spalte fuer die Sortierung benutzt hast, sondern dein formatiertes Datum.

    MfG ChrisB

    1. Moin!

      "SELECT date_format(datum,'%d.%m.%Y')

      Du hast als eine Spalte, die auf den Bezeichner datum hoert.

      AS datum,

      Hier ueberschreibst du diesen Bezeichner aber - und weist ihn dem *formatierten* Datum zu, welches du gerade erzeugt hast.

      headline, info, kategorie FROM news
      ORDER BY datum LIMIT 15"

      Und eben dieses Format wird also hier zur Sortierung herangezogen.

      Oder kürzer und vielleicht verständlicher:

      Du sortierst nach der Spalte "datum", das ist aber das Stringergebnis deiner Funktion date_format, nicht das Datum in deiner DB-Spalte "datum".

      Abhilfen:
      ORDER BY news.datum
      Die Angabe der Tabelle sortiert nicht nach Ergebnis-Alias, sondern nach Tabelle.

      date_format(datum,...) AS datum2 ... ORDER BY datum
      Ein anderer Aliasname würde die Doppeldeutigkeit ebenfalls verhindern.

      - Sven Rautenberg

      --
      "Love your nation - respect the others."