ORDER BY zeigt keine Wirkung

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

  • ORDER BY zeigt keine Wirkung

    Hallo alle zusammen,

    Ich habs eigentlich schon 1000x gemacht aber irgendwie ordnet MySQL meine Datensätze nicht so wie ich sie bräuchte.

    PHP-Code:
    SELECT FROM termintabelle WHERE monat='4' AND jahr='2006' ORDER BY tag ASC 
    - zu *: Ich brauche alle Datensätze aus der Tabelle
    - zu Monat und Jahr: Hier wird dynamisch der jeweilige Monat oder Jahr eingetragen. Habs jetzt nur mal statisch geschrieben, damit ichs besser zeigen kann

    - zu ORDER BY tag: Genau hier sollte er mir eigentlich alle Datensätze, die im Monat 4 und Jahr 2006 vorhanden sind nach dem TAG ordnen.
    Dies tut er aber eigenartigerweise nicht. Warum?
    Ich hab das ORDER BY schon oft angewendet aber hier will er nicht.

    Mario

  • #2
    Falscher Datentyp?

    Tag sollte ein nummerischer Datentyp sein, sonst sortiert er die 10 vor der 2 ein (1 < 2)

    Warum arbeitest du nicht mit einem Datumsfeld?
    Ich denke, also bin ich. - Einige sind trotzdem...

    Kommentar


    • #3
      Datum

      hi mrhappiness,

      Es war tatsächlich der Datentyp, wie du vermutet hast.

      Das mit dem Datumsfeld ist mir schon in den Kopf gekommen aber ich weiß leider noch nicht, wie ich solch ein Feld nutzen kann.
      Habe derzeit für TAG, MONAT und JAHR ein Feld genommen um die Angaben als ZAHL nutzen zu können.
      Mit dem Datumsformat kenn ich mich noch genau so wenig aus, wie mit TIME zB.

      Mario

      Kommentar


      • #4
        du könntest doch einfach einen timestamp speichern oder?

        Kommentar


        • #5
          timwstamp

          Einen WAS?

          Das wäre somit das nächste, was ich noch nicht verwendet habe.

          Wo gibts entsprechende Hilfen?

          Mario

          Kommentar


          • #6
            Mach dich wegen DatenTyp DATE oder DATETIME schlau - sehr mächtige Feldtypen wie ich finde. Timestamp ist aus MySQL 3 zeiten

            Auf DATE Felder kannst du verschieden Funktionen anwenden, unter anderem kannst du auch ordentlich nach ihnen sortieren - 'ORDER BY date' ist damit kein Problem.

            Beispielfunktionen
            DATE_FORMAT
            DATE_ADD
            DATE_SUB
            ..
            ..

            Um ein DATE Feld mit dem heutigen Datum zu füllen einfach datum = now() machen und alles ist erledigt.

            Auch das Rechnen mit Daten über Jahresgrenzen hinweg ist kein Problem.
            Wie willst du zum Beispiel bei deinen Felder das Datum von gestern rausfinden?
            Könnte ja sein das heute der 1.3. ist und zufälligerweise noch Schaltjahr

            Mit DATE Feldern kein Problem:
            PHP-Code:
            SELECT DATE_SUBnow(), INTERVAL 1 day )

            // um das ganze auch noch formatiert auszugeben
            SELECT DATE_FORMAT(DATE_SUBnow(), INTERVAL 1 day ), '%d.%m.%Y')

            //anstatt now() kannst du hier natürlich mit deinem Date Feld arbeiten.

            //noch ein beispiel - alle Einträge der Tabelle von diesem Monat
            SELECT FROM tab1 WHERE YEAR(datum) = YEAR(now()) AND MONTH(datum) = MONTH(now()) 
            Zuletzt geändert von prego; 17.02.2006, 18:27.

            Kommentar

            Lädt...
            X