Ver Mensaje Individual
  #1 (permalink)  
Antiguo 08/04/2014, 02:13
Avatar de temerariomalaga
temerariomalaga
 
Fecha de Ingreso: marzo-2013
Ubicación: Londres
Mensajes: 156
Antigüedad: 11 años, 1 mes
Puntos: 9
Macroconsulta con consultas anidadas

Buenas, tengo una macroconsulta muy muy muy grande. La idea de la consulta es poder comprobar la gente disponible en un periodo determinado (esto viene almacenado en una tabla). A continuación con todos los disponibles buscaría si dentro de ese intervalo de tiempo tiene algún partido asignado, devolviendo la hora del partido. Después se comprueban todos los que pertenezcan a una determinada localidad de todos los disponibles. A continuación calcula que entre ese partido y el que se le va a asignar haya una diferencia determinada (en este caso hora y tres cuartos). Si hay esta diferencia de hora se mostrarán todas las personas disponibles de esa localidad, en caso contrario se haría una consulta para comprobar las personas de las localidades más cercanas que cumplan los requisitos anteriores. Después de haber soltado este rollo viene donde encuentro los problemas. La primera consulta la ejecuto y funciona perfectamente pero a partir de ahí ya no se ejecuta más o parece que no se ejecuta. Para depurar errores he ido poniendo "echo prueba" para probar si entra o no en los bucles y ya en el segundo, después de la segunda consulta no entra. No creo que la manera de plantear este problema sea la más eficiente entonces espero que alguien pueda echarme una mano para hacer esto mejor o si esta es la única manera que me ayude a resolver mi problema. Dejo aquí el código de lo que tengo ahora mismo hecho. Muchas gracias por leer este tostón
Código PHP:
Ver original
  1. if($result=$mysqli->query("SELECT EQUIPO_ARBITRAL.Codigo_arbitro FROM EQUIPO_ARBITRAL INNER JOIN ARBITRO
  2.     ON EQUIPO_ARBITRAL.Codigo_arbitro=ARBITRO.Codigo_arbitro INNER JOIN DISPONIBILIDAD
  3.     ON ARBITRO.Codigo_arbitro=DISPONIBILIDAD.Codigo_arbitro WHERE SM='Si'")){ /*Comprueba la disponibilidad el sabado por la mañana*/
  4.         while($row=$result->fetch_array()){
  5.             $codigo=$row["Codigo_arbitro"];
  6.             if($result2=$mysqli->query("SELECT Codigo_arbitro, EQUIPO_ARBITRAL.Nombre, Apellidos, Hora, LOCALIDAD.Codigo_localidad AS 'Loca' FROM EQUIPO_ARBITRAL
  7.             INNER JOIN PARTIDO P ON EQUIPO_ARBITRAL.Codigo_arbitro=P.ArbPrin
  8.             INNER JOIN PABELLON ON P.Codigo_pabellon=PABELLON.Codigo_pabellon
  9.             INNER JOIN LOCALIDAD ON PABELLON.Codigo_localidad=LOCALIDAD.Codigo_localidad WHERE Codigo_arbitro IN($codigo)")){   /*Comprueba los arbitros disponibles y si tienen partidos, devolviendo la hora*/
  10.                 while($row2=$result2->fetch_array()){
  11.                     $hora1=$row2["Hora"];
  12.                     $localidad=$row2["Loca"];
  13.                     if($result3=$mysqli->query("SELECT Codigo_arbitro, Nombre, Apellidos, Cod_localidad FROM EQUIPO_ARBITRAL WHERE Cod_localidad=$localidad")){ /*Comprueba la localidad de los arbitros*/
  14.                         while($row3=$result3->fetch_array()){
  15.                             if($result4=$mysqli->query("SELECT TIMEDIFF('$hora1','19:30') AS 'Diferencia'")){      /*Comprueba que haya diferencia entre el partido anterior y el asignado*/
  16.                                 while($row4=$result4->fetch_array()){
  17.                                     $diferencia=$row4["Diferencia"];
  18.                                     $dif=strtotime($diferencia);
  19.                                     $intervalo1 = strtotime( "01:45" );
  20.                                     $intervalo2 = strtotime( "-01:45" );
  21.                                     if($dif<$intervalo1 OR $dif>$intervalo2){
  22.                                         /*Aquí se debe buscar otros árbitros*/
  23.                                     }
  24.                                     else{
  25.                                         if($result5=$mysqli->query("SELECT Nombre, Apellidos FROM EQUIPO_ARBITRAL WHERE Codigo_arbitro=$codigo ORDER BY Apellidos")){
  26.                                             while($row5=$result5->fetch_array()){
  27.                                                 $nombre=$row5["Nombre"];
  28.                                                 $apellidos=$row5["Apellidos"];
  29.                                                 echo $apellidos.", ".$nombre;
  30.                                             }
  31.                                         }
  32.                                         else{
  33.                                             echo $mysqli->errno, $mysqli->error;
  34.                                         }  
  35.                                     }
  36.                                 }
  37.                             }
  38.                             else{
  39.                                 echo $mysqli->errno, $mysqli->error;
  40.                             }
  41.                         }
  42.                     }
  43.                     else{
  44.                         echo $mysqli->errno, $mysqli->error;
  45.                     }
  46.                 }
  47.             }
  48.             else{
  49.                 echo $mysqli->errno, $mysqli->error;
  50.             }          
  51.         }
  52.     }
  53.     else{
  54.         echo $mysqli->errno, $mysqli->error;
  55.     }
__________________
Málaga Club de Fútbol: Memoria, Compromiso, Fe