Kalender - Sortieren nach mehreren Feldern

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

  • Kalender - Sortieren nach mehreren Feldern

    Hallo,

    ich habe ein ganz großes Prob und keine Ahnung wie ich es lösen soll.
    Ist auch nicht ganz einfach zu erklären...

    ich habe einen Kalender mit PHP/MYSQL geschrieben
    in der Datenbank 'kalender' gibts 4 Felder

    id ( zählervariable )
    zähler ( zählt die anzahl der Termine pro Tag )
    datum ( z.B. 08.01.2008 )
    tag ( z.B. Dienstag )

    bevor jemand einen Termin hinzufügt, werden neue Felder angelegt
    zB "beitrag,überschrift,uhrzeit"
    beim nächsten dann - beitrag1, überschrift1, uhrzeit1.... beitrag2, überschrift2, uhrzeit2...
    usw...

    jetzt sortiere ich die Ausgabe nach der ID, ich könnte es auch nach Datum sortieren, wäre das gleiche Ergebnis, das ganze wird durch ein LIMIT auf 7 beschränkt, er gibt also zB 01.01.2008 - 07.01.2008 aus...

    nun möchte ich innerhalb eines Tages ja auch die Uhrzeiten sortiert haben...

    das geht allerdings nicht mit

    $sql1 = "SELECT * FROM kalender ORDER by id ASC,uhrzeit ASC LIMIT $counter,7";

    weil es ja nicht immer - uhrzeit - ist sondern weitergeht uhrzeit1, uhrzeit2, uhrzeit3...

    da müsste also ne schleife drum, mit ner zählervariable...

    aber ich kann ja auch nicht sagen

    $uhrzeit_anzahl = 'uhrzeit'.$count;?>

    und $count hochzählen, weil er ja dann ALLES nach uhrzeit1 sortiert
    danach dann nach uhrzeit2, danach nach uhrzeit3...
    usw

    da komm ich auf keinen grünen zweig...

    hiiiiilfe

  • #2
    ich würde das erstmal normalisieren, dann bekommste auch ein ordentliches query hin.
    Beantworte nie Threads mit mehr als 15 followups...
    Real programmers confuse Halloween and Christmas because OCT 31 = DEC 25

    Kommentar


    • #3
      normalisieren

      dh. andere Tabellenstruktur?

      mir fällt aber keine andere sinnvolle ein....

      Kommentar


      • #4
        http://de.wikipedia.org/wiki/Normalisierung_(Datenbank)

        Kommentar


        • #5
          lol na danke

          sowas allgemeines hilft mir jetzt auch nicht soooviel weiter

          ich weiss schon ungefähr wie ne Datenbank aufgebaut wird, was relational ist, etc.

          mhh

          Kommentar


          • #6
            Du hast also nicht nur die genannten vier Felder in der Kalender-Tabelle, sondern auch noch die Uhrzeit. Dafür sind zähler und tag überflüssig, da sie sich jederzeit bestimmen lassen.
            Und die Sortierung ist bei deiner Abfrage korrekt. Die Anzahl kannst du in diesem Fall nicht mit LIMIT bestimmen, sondern mit einer WHERE-Klausel und sortieren tust du besser über Datum/Uhrzeit, da die ID ja nicht zwingend in der gleichen Reihenfolge gesetzt wird. Das könnte dann etwa so aussehen:
            Code:
            SELECT
            	datum,
            	uhrzeit,
            	case DAYOFWEEK(datum) 
            		WHEN 1 THEN 'Sonntag'
            		WHEN 2 THEN 'Montag'
            		WHEN 3 THEN 'Dienstag'
            		WHEN 4 THEN 'Mittwoch'
            		WHEN 5 THEN 'Donnerstag'
            		WHEN 6 THEN 'Freitag'
            		WHEN 7 THEN 'Samstag'	tag
            FROM
            	kalender
            WHERE
            	datum BETWEEN <anfandsdatum> AND DATE_ADD(<anfandsdatum>, INTERVAL 7 DAY)
            ORDER BY
            	datum, uhrzeit
            Gruss
            H2O

            Kommentar

            Lädt...
            X