Ciao a tutti e buone feste.
Ho scritto questa stored procedure in mysql che distribuisce alcuni nomi contenuti in una tabella in settimane e turni di lavoro.
Ad ogni persona è assegnata una settimana di lavoro di 5 giorni consecutivi (normalmente di 5 gg. ma il criterio sono le settimane anche quando hanno festività in mezzo alla settimana) che ho già previsto nella tabella giorni lavorativi, escludendo sabato, domenica e festività da calendario 2013.
Nel mio caso ho contato 50 settimane in un anno che ho diviso per 5 lavoratori uguali a 10 settimane ciascuno, perché per due settimane all'anno la ditta è chiusa per ferie.
La SP funziona correttamente solo quando faccio funzionare la versione numero 1, mentre distribuisce ad un solo nome della tabella tutte le settimane lavorative dell'anno quando provo la versione 2.
Sapete dirmi perchè succede questo?
Grazie mille
SP versione numero 1
SP versione 2:codice:DELIMITER // DROP PROCEDURE IF EXISTS prc_test// CREATE PROCEDURE prc_test () BEGIN DECLARE CountOfEmp INT ; SELECT @CountOfEmp := COUNT(*) FROM NAMES ; SELECT @CountOfEmp ; SELECT `dates`, `names` FROM ( SELECT *, 1 + (EXTRACT(WEEK FROM `dates`)) %@CountOfEmp FROM `dates` ) AS GroupsOfWeeks INNER JOIN `names` ON 1 + (EXTRACT(WEEK FROM `dates`)) %@CountOfEmp = `names`.id ORDER BY `dates` ; END// DELIMITER ; CALL prc_test ();
tabelle mysql:codice:DELIMITER // DROP PROCEDURE IF EXISTS prc_test// CREATE PROCEDURE prc_test () BEGIN DECLARE CountOfEmp INT ; DECLARE n INT ; SELECT @n := 1 + (EXTRACT(WEEK FROM `dates`)) FROM `dates` ; SELECT @n ; SELECT @CountOfEmp := COUNT(*) FROM NAMES ; SELECT @CountOfEmp ; SELECT `dates`, `names` FROM ( SELECT *, n %@CountOfEmp FROM `dates` ) AS GroupsOfWeeks INNER JOIN `names` a ON @n %@CountOfEmp = a.id ORDER BY `dates` ; END// DELIMITER ; CALL prc_test ();
http://users9.nofeehost.com/cms9651/index2.htm

Rispondi quotando