DayOfWeek IN oder NOT IN

Pol

Mitglied
Hallo
Ich möchte herausfinden, ob ein Tag in einem Profil vorkommen. Ich verwende ein View (MySQL 5).

Haupttabelle Arbeitszeit: (Id(INT), Startdatum(Datetime), Profil(Varchar)
Id, Startdatum, Profil
1 12.01.2015, 2,3,4,5,6
1 13.01.2015, 2,3,4,5,6
1 14.01.2015, 2,3,4,5,6
1 15.01.2015, 2,3,4,5,6
1 16.01.2015, 2,3,4,5,6
1 17.01.2015, 2,3,4,5,6
1 18.01.2015, 2,3,4,5,6

Mein View:
Select
Id, Startdatum,
(CASE
WHEN DayOfWeek(arbeitszeit.Startdatum) IN (arbeitszeit.Profil)
THEN 1
ELSE 0 END) AS IST

Leider bekomme ich nur für die ersten TAG (2) einen Resultat und für die anderen nicht.
Meine Fragen:
1. Darf ich das "IN" innerhalb von Case verwenden?
2. Warum erhalten ich nur den Wert für den 2 und nicht für die 3,4,..
3. Muss ich als Datentype für Profil was anderes wählen?
4. Gibt es einen besseren weg?

danke
mpol_ch
 
Da kann etwas nicht stimmen. Wenn ich das richtig verstanden habe hast du in der Tabelle 3 Spalten: Id, Startdatum, Profil. Aber in deinem Datenbeispiel hast du plötzlich 7 Spalten?! : 1, 12.01.2015, 2,3,4,5,6

PS:
DAYOFWEEK(): 1 = Sunday, 2 = Monday, … 7 = Saturday
WEEKDAY(): 0 = Monday, 1 = Tuesday, … 6 = Sunday
 
Zuletzt bearbeitet:
Hallo BaseBallBatBoy, danke für den Hinweis. Die Spalte Profil beinhaltet (2,3,4,5,6) D.h. Mitarbeiter arbeitet vom Montag bis Samstag. Also ohne Wochenende...

jeipack: danke für den Hinweis. Ja, ich habe jetzt auch "Set" genommen. Ich checke das WochenProfil wie folgt, ob jemand in der Woche arbeitet:

(Find_In_Set(DayOfWeek(arbeitszeit.arbzstart), arbeitszeit.awochenprofil) > 0)

Danke.
mpol_ch
 
Zuletzt bearbeitet:
Zurück