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
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 ();
SP versione 2:
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 ();
tabelle mysql:
http://users9.nofeehost.com/cms9651/index2.htm