Der folgende Beitrag wurde am 25. 10. 2002, 14:05 Uhr von Markus B. veröffentlicht.
Hallo zusammen,
ich habe eine Datenbank, in der folgende Datenfelder angelegt sind:
tag
zeit
beschreibung
Die Abfrage ist nach ORDER BY tag, zeit sortiert.
Problem:
Er sortiert derzeit den Wochentag alphabetisch also z. B.
Dienstag 11.00 Uhr
Donnerstag 8.00 Uhr
Freitag 8.00 Uhr
Montag 8.00 Uhr
...
soll er aber nicht machen, sondern (erst Wochentag dann Uhrzeit):
Montag 8.00 Uhr
Montag 9.30 Uhr
Dienstag 11.00 Uhr
Mittwoch 8.00 Uhr
Mittwoch 15.45 Uhr
...
Kann ich bei ORDER eine zusätzliche Funktion ansprechen, damit ich die Wochentage sortieren kann.
Ich arbeite bei der Eingabe mit dt. Wochentagen (Montag), dann müsste ich wohl ein Zwischenskript einfügen, dass die dt. Wochentagseingabe in die engl. Wochentage (Monday) modifiziert in die Tabelle einträgt und beim Auslesen wieder auf dt. Wochentage (Montag) ändert, oder?
IF ($day == "Monday") $weekday = "Montag";
Vielen Dank für eure Unterstützung!!!!
Der folgende Beitrag wurde am 25. 10. 2002, 14:19 Uhr von Sven Rautenberg veröffentlicht.
> Hallo zusammen,
> ich habe eine Datenbank, in der folgende Datenfelder angelegt sind:
> tag
> zeit
> beschreibung
> Die Abfrage ist nach ORDER BY tag, zeit sortiert.
Welchen Dateityp haben die Felder tag und zeit? Und warum sind es überhaupt _zwei_ Felder? Üblicherweise regelt man Datumseinträge doch über ein datetime-Feld.
Naja, abhängig von deiner Anforderung: Wenn du statt des Wochentagnamens einen Integer-Wert speicherst (Montag = 0, Dienstag = 1, Mittwoch = 2... Sonntag = 6), kannst du danach prima sortieren, und die Übersetzung dieser Zahlen entweder in der Datenbank oder im Auswerteskript erledigen.
Es ist immer schlecht, Klartext in die Datenbank zu schreiben, wenn sich dieser Klartext regelmäßig wiederholt (zum Beispiel eine Wochentagbezeichnung). Bei sowas arbeitet man besser mit IDs - und evtl. einer weiteren Tabelle, in der die IDs eindeutig einem Namen zugeordnet werden.
Alternative (wenn du auf ein einzelnes Feld umstellst):
SELECT DAYOFWEEK(datum) AS wochentag FROM tabelle ORDER BY wochentag;
Mit der Funktion DAYOFWEEK erhälst du den Wochentag eines Datums, das in der Tabelle gespeichert ist. "AS wochentag" ordnet der Abfragespalte einen schöneren Namen zu, und danach wird auch sortiert. Sonntag = 1, Montag = 2,...Samstag = 7.
Siehe auch http://www.mysql.com/documentation/mysql/bychapter/manual_Reference.html#Date_and_time_functions
- Sven Rautenberg
© 1998-2013 SELFHTMLImpressumSoftware: Classic Forum 3.4