webForumDet fria alternativet

Enkel schemaläggning

2 svar · 1 126 visningar · startad av Obbelix

ObbelixMedlem sedan okt. 2002257 inlägg
#1

Hej,

Var ett tag sedan man höll på aktivt med SQL så kunskaperna har minskat med åren.
Ska göra en enkel schemaläggningsfunktion där man i ett gränssnitt väljer vilka veckodagar samt en tid. Kommer bli checkboxar för mån-sön samt en ruta för önskad tid.
Tänker mig sedan två tabeller i databasen (MySQL).

1. planner
 -id
 -namn
 -tid
2. planner_days
 -planner_id
 -dayOfWeek

Alltså ser tabellerna ut så här om en schemaläggning är inlagd mån,ons,fre kl 13:00

1. planner
 id    namn    tid
 1     test1   13:00:00

2. planner_days
 planner_id  dayOfWeek
 1           0
 1           2
 1           4

Alltså måndag = dag 0, söndag = dag 6

Nu skulle jag då vilja göra en SQL-fråga som tar fram nästkommande schemaläggning utifrån tiden NU.
Är ju inga konstigheter att kolla om dayOfWeek är större eller lika med weekday(NOW()), men problemet blir ju tiden om man kollar den på samma sätt.
Det funkar ju om man gör kollen 11:00, men gör man den 14:00 blir det ju inget svar.
Sedan kommer man ju till krånglet om weekday är 6 (söndag) så ska den ju plocka nollan (måndag).

Någon som kan hjälpa mig på vägen?

Peter SMedlem sedan dec. 20025 483 inlägg
#2
select top 1 * 
from
(
    ( select top 1 *, 1 as priority from planner p inner join planner_days d on p.id = d.planner_id where (weekday(now()) = d.dayofweek and p.tid >= time()) or weekday(now()) < d.dayofweek order by d.dayofweek )
    union
    ( select top 1 *, 2 as priority from planner p inner join planner_days d on p.id = d.planner_id order by d.dayofweek )
) as x
order by x.priority
ObbelixMedlem sedan okt. 2002257 inlägg
#3

Tackar!
Verkar funka precis som jag vill.

134 ms totalt · 3 externa anrop · v20260731065814-full.cf67ef55
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
131 ms — hämta tråd, inlägg och bilagor (db)