Datenbank sotieren nach Wochentag

h4dhunTer

Erfahrenes Mitglied
Hallo,
ich habe nun bisschen durchs Web gesucht, aber nie das passende gefunden.

Es geht darum, dass ich eine Spalte "tag" habe und diese gebe ich mit den anderen Informationen aus. Nun will ich aber nach Wochentagen sotieren. Das heißt halt Montag, Dienstag, Mittwoch, ...

Wie geht das? :confused:

Vielen Dank schonmal.
 
Hallo,

ja. Ok ich hätte 1,2,3,4,5,6 oder 7 nehmen können, oder andere Daten, doch das Script ist schon vor langer Zeit in meinen Anängen geschrieben worden. Nun ist es an ganz vielen stellen schon eingebaut und die Funktion brauch ich nur einmal.
 
Hallo,

auch wenn es nicht schön ist und ein DATE.-Wert in der Tabelle sicher hilfreicher wäre, könntest es folgendermassen realisieren:

SQL:
select *, 
      (CASE tag 
          WHEN 'Montag'     THEN 1
          WHEN 'Dienstag'   THEN 2 
          WHEN 'Mittwoch'   THEN 3 
          WHEN 'Donnerstag' THEN 4 
          WHEN 'Freitag'    THEN 5
          WHEN 'Samstag'    THEN 6 
          WHEN 'Sonntag'    THEN 7 
          ELSEe 'unbekannt'
       END
      ) AS wochentag_idx 
  from tabelle 
 order by wochentag_idx;

Schön ist die Lösung nicht, aber sie sortiert anhand der in der Spalte "tag" enthaltenen Informationen.

Falls du deine Spalte konsequent auf DATE bzw. DATETIME umstellst, kannst du einfach so die Wochentage ausgeben bzw. danach sortieren:

SQL:
SELECT *, 
       DATE_FORMAT(tag,'%W') AS wochentag_name,
       WEEKDAY(tag)  AS wochentag_idx
  FROM tabelle
 ORDER BY wochentag_idx;

Markus
 
Zuletzt bearbeitet:
Naja, wenn es DATE oder DATETIME wäre würd ich es eher so machen:
SQL:
SELECT *
FROM table
ORDER BY WEEKDAY(datum);

Und wenn es Pro Wochentag, Woche und Jahr gemahct werden soll:
SQL:
SELECT *
FROM table
ORDER BY WEEKDAY(datum), WEEKOFYEAR(datum), YEAR(datum);
 
Zurück