Os explico que contiene cada tabla.
-TEMP: Contiene los códigos de la tabla Equipo_arbitral que estan disponibles el dia de un partido.
-TEMP3: Contiene los códigos de los árbitros que cumplen una diferencia entre horas (si por ejemplo tienen un partido ya asignado a las 17:00 no se le podrá asignar un partido en el rango desde las 15:15 hasta las 18:45)
-TEMP4: Contiene los códigos de los árbitros que no cumplen la diferencia de horas (Por algún motivo en el if en el que compruebo el rango horario en esta tabla también me inserta los que si cumplen el rango por lo que tengo que filtrarlo posteriormente, cosa que hago en estas consultas)
-TEMP5: Contiene los árbitros que tienen algún partido el mismo dia del partido que se va a asignar
-TEMP6: Contiene los códigos de los árbitros que tienen un partido el mismo dia del partido a asignar y cumplen los rangos horarios.
-TEMP7: Contiene los códigos de los árbitros que tienen un partido el mismo dia del partido y no cumplen los rangos horarios.
Ahora aquí esta la consulta:
Código MySQL:
No se el por qué pero si intento asignar un partido a las 18:00 de un viernes me aparecen los que ya tienen un partido asignado por ejemplo a las 17:00. Ver original
SELECT COUNT(*) INTO @regs FROM EQUIPO_ARBITRAL WHERE Codigo_arbitro IN (SELECT * FROM TEMP) AND Codigo_arbitro NOT IN(SELECT codigo FROM TEMP4 WHERE codigo NOT IN(SELECT codigo FROM TEMP3)) AND Codigo_arbitro NOT IN(SELECT codigo FROM TEMP5 WHERE codigo NOT IN(SELECT codigo FROM TEMP7)) AND Cod_localidad= SELECT Codigo_arbitro AS 'Cod_arbi', Licencia AS 'Licenc', Nombre AS 'Nom', Apellidos AS 'Ape' FROM EQUIPO_ARBITRAL WHERE Codigo_arbitro IN (SELECT * FROM TEMP) AND Codigo_arbitro NOT IN(SELECT codigo FROM TEMP4 WHERE codigo NOT IN(SELECT codigo FROM TEMP3)) AND Codigo_arbitro NOT IN(SELECT codigo FROM TEMP5 WHERE codigo NOT IN(SELECT codigo FROM TEMP7)) AND Cod_localidad= SELECT COUNT(*) INTO @regs2 FROM EQUIPO_ARBITRAL WHERE Codigo_arbitro IN (SELECT * FROM TEMP) AND Codigo_arbitro NOT IN(SELECT codigo FROM TEMP4 WHERE codigo NOT IN(SELECT codigo FROM TEMP3)) AND Codigo_arbitro NOT IN(SELECT codigo FROM TEMP5 WHERE codigo NOT IN(SELECT codigo FROM TEMP7)) AND Cod_localidad IN SELECT Codigo_arbitro AS 'Cod_arbi', Licencia AS 'Licenc', Nombre AS 'Nom', Apellidos AS 'Ape' FROM EQUIPO_ARBITRAL WHERE Codigo_arbitro IN (SELECT * FROM TEMP) AND Codigo_arbitro NOT IN(SELECT codigo FROM TEMP4 WHERE codigo NOT IN(SELECT codigo FROM TEMP3)) AND Codigo_arbitro NOT IN(SELECT codigo FROM TEMP5 WHERE codigo NOT IN(SELECT codigo FROM TEMP7)) AND Cod_localidad IN SELECT Codigo_arbitro AS 'Cod_arbi', Licencia AS 'Licenc', Nombre AS 'Nom', Apellidos AS 'Ape' FROM EQUIPO_ARBITRAL WHERE Codigo_arbitro IN (SELECT * FROM TEMP) AND Codigo_arbitro NOT IN(SELECT codigo FROM TEMP4 WHERE codigo NOT IN(SELECT codigo FROM TEMP3)) AND Codigo_arbitro NOT IN(SELECT codigo FROM TEMP5 WHERE codigo NOT IN(SELECT codigo FROM TEMP7));