Alcune considerazioni generali.
MINU ha scritto:• In pratica ho tre tabelle principale di inserimento dati:
Tabella Per anno
Tabella Per mese e giorno
Tabella Dipendenti,
tutti e tre collegati con ion “uno a molti” ed in ordine di elenco inseriti come foglio dati secondario
Mi stai dicendo che hai due tabelle il cui unico scopo è contenere l'anno ed il mese/giorno? Se ho capito bene, questo potrebbe essere un buon esempio per il glossario alla voce
Masochismo.
MINU ha scritto:• Nella tabella dipendenti i campi sono: nome e cognome , posti di lavoro e orario di lavoro (Campo DATA/ORA) diviso in tre fasce giornaliere: Mattino dalle/alle ore (sono due campi), Pomeriggio dalle/alle ore(sono due campi), e Sera dalle /alle ore(sono due campi).
<snip>
Preciso che in un giorno un dipendente può effettuare solo un turno es: tizio oggi lavora di mattino
e quindi i campi pomeriggio e sera restano null, domani lavora di pomeriggio e quindi…………restano null
Altro esempio di disegno di base dati non normalizzato: a che ti servono 6 campi quando sai già che ne userai comunque sempre e solo due?
Il mio consiglio è cambiare il disegno della base dati.
Una tabella
Dipendenti:
- ID_Dipendente (contatore)
- Cognome
- ecc.
Una tabella
Movimenti:
- ID_Dipendente (Intero lungo)
- Ingresso (Data)
- Uscita (Data)
Quest'ultima conterrà sia la data (gg/mm/aaaa) sia l'ora (hh:mm:ss) di ogni "timbratura" (così hai anche il bonus di poter gestire turni a cavallo della mezzanotte, cosa che non mi sembra facile con l'attuale struttura). Se proprio ti serve (ma dovrebbe essere possibile desumerlo dall'ora di Ingresso) puoi aggiungere un campo Turno (Byte --> 1=Mattino 2=Pomeriggio 3=Sera).
Partendo da questo struttura "pulita" si possono facilmente costruire tutte le queries che ti servono.
Se, invece, non potessi o non volessi cambiare la struttura del db si può comunque provare a sistemare in qualche modo il tuo problema.
Alessandro