#1 Jano
ahoj, no ono to právě není až tak jednoduché kvůli nočním, kdy je třeba párovat přes 2 dny, výhodou v tomto případě je pokud jsou průchody rozlišené na Příchod a Odchod. Proto se to v konečné fázi řeší programově, program si z DB vytáhne režim člověka + všechny průchody a pak to přepočítává.
Řešení čistě v SQL dotazu by bylo dost náročné, tam by asi bylo potřeba použít uložené procedury.
V první řadě potřebuješ dát dohromady odpovídající páry Příchod-Odchod, z nich pak rozdílem získat odpracovaný čas (není třeba ořezávat na TIME rozdíl datetime ti dá stejný výsledek jako, když extrahuješ nejdřív časy a pak je odečteš) a pak je ještě srovnat s definicí pracovní doby.
BTW co má být v té tabulce Den jsem nepochopil pokud je účelem buď definice pracovní doby pro jednotlivé dny nebo platnost pracovní doby pro daného člověka, měla by to být křížová tabulka umístěná mezi osobou a Očekávanou pracovní dobou, V tabulce Osoby zrušit ID očekávané pracovní doby, do tabulky Den přidat ID osoby a svázat s Osobou, podobně jako jsou u průchodů vazby Osoba a Duvod, tak v Den budou vazby Osoba a Očekávaná prac. doba.