Tage Zeile wie folgt definiert:Lassen Sie sich zwischen Tag Gruppen
0 - Monday
1 - Tuesday
2 - Wednesday
3 - Thursday
4 - Friday
5 - Saturday
6 - Sunday
ich mehrere Gruppen in der Datenbank haben, die start_day haben, END_DAY, ...
Teil des SQL ist dies
SELECT *
FROM groups AS pg
WHERE ...
AND pg.start_day <= 6
AND pg.end_day >= 6
Nun, wenn meine Gruppe hat
start_day: 0
end_day: 4
oder
start_day: 5
end_day: 6
die obige SQL arbeitet völlig in Ordnung. Das Problem wird in diesem Fall
start_day: 4
end_day: 5
und
start_day: 6
end_day: 3
, wenn ich versuche zweite Gruppe zu erhalten, zum Beispiel für Tag 6 seit start_day größer als END_DAY ist. Was wäre der beste Weg, dies zum Funktionieren zu bringen?
Grundsätzlich habe ich Preise, die von Wochentag abhängen, und ich muss den richtigen Preis für den angegebenen Tag der Woche erhalten.
Ich weiß nicht, ob Sie Ihr Modell an dieser Stelle ändern können, aber die akzeptierte Antwort scheint eine gute Wahl für wöchentliche Ereignisse wie Ihre http: //stackoverflow.com/questions/2836356/best-way-to-store-weekly-event-in-mysql – RubioRic
@RubioRic das klingt nach einer guten Lösung, aber es würde die Website an dieser Stelle komplett durchbrechen. –
nicht zwischen wegen nicht funktionieren würde wegen> = und <= - macht sie nicht < > - so müssen Sie 'NOT (pg.start_day <0 UND pg.end_day> 4)' nach der Negation, die sich als dazwischen ergeben. –