Cercando di semplificare, ho un'applicazione web in PHP+MySQL con due tabelle, dipendenti e orari in relazione uno a molti. In quest'ultima per ogni dipendente e per ogni giorno della settimana (da 1 a 7) ho gli orari di lavoro e il numero di ore da svolgere da contratto.
Mi serve una query che mi sommi, dipendente per dipendente, tutte le ore teoriche da svolgere in un periodo, ad esempio in una data precisa, un mese o un anno.codice:DIPENDENTI ORARI ------------ ------ id PK id PK cognome id_dipendente chiave esterna nome numero_giorno .... orario_entrata orario_uscita totale_ore
In pratica il risultato dovrebbe essere:
ANNO 2010:
dipendente 1 5000 ore
dipendente 2 2000 ore
--------------------------
TOTALE ore 7000 ore
Per fare questo tipo di query devo prendere tutti i giorni dell'anno (o di un lasso di tempo) e vedere dipendente per dipendente quante ore devono svolgere. Ovviamente non posso fare una semplice moltiplicazione perchè il risultato dipende dai giorni della settimana in cui l'anno inizia e finisce.
Devo creare una tabella per ogni anno, dove inserire tutti i giorni, oppure c'è un modo in MySQL per automatizzare questo tipo di operazione, senza creare nuove tabelle?
Ve lo chiedo perchè il database ha un'interfaccia web e quindi tramite un form è chi consulta la pagina a decidere il lasso di tempo in cui filtrare i dati.
Però cosa faccio se mi chiedono i dati di un anno di cui non ho ancora creato la tabella?
Potrei limitare gli anni creando un elenco a discesa con solo gli anni di cui ho le tabelle.
Oppure creare una store procedure (se è così che si chiama) che verifica se la tabella di quell'anno c'è e se non c'è me la crea.
Inoltre il totale finale lo posso anche calcolare via PHP sommando le ore dei singoli dipendenti man mano che scorro le righe per visualizzarle a schermo.
Forse mi frullano troppe idee per la testa... :master:
Grazie in anticipo a chi vorrà aiutarmi.
![]()

Rispondi quotando

