Ver Mensaje Individual
  #4 (permalink)  
Antiguo 17/04/2014, 06:38
Avatar de gnzsoloyo
gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: Usar variables de usuario en procedimientos

Bueno, sin saber cómo es realmente la estructura de las tablas de los árbitros, voy a suponer que el campo "dia" existe en la tabla "disponibilidad", y que corresponde al día disponible de ese árbitro.
Mi primer acercamiento sería este:
Código MySQL:
Ver original
  1. DELIMITER $$
  2.  
  3.  
  4. CREATE PROCEDURE getDia(IN codigo INTEGER, IN pabellon INTEGER)
  5.     DECLARE fecha INT;
  6.     DECLARE hora TIME;
  7.     DECLARE dia VARCHAR(2);
  8.  
  9.     SELECT DAYOFWEEK(Fecha), TIME(hora)  FROM PARTIDO WHERE Codigo_partido=codigo
  10.     INTO FECHA, HORA;
  11.     CASE fecha
  12.     WHEN 0 THEN
  13.         IF hora < TIME('15:00:00') THEN
  14.             SET dia = 'DM';
  15.         ELSE
  16.             SET dia = 'DT';
  17.         END IF;
  18.     WHEN 1 THEN
  19.         SET dia = 'L';
  20.     WHEN 2 THEN
  21.         SET dia = 'M';
  22.     WHEN 3 THEN
  23.         SET dia = 'X';
  24.     WHEN 4 THEN
  25.         SET dia = 'J';
  26.     WHEN 5 THEN
  27.         SET dia = 'V';
  28.     WHEN 6 THEN
  29.         IF hora < TIME('15:00:00') THEN
  30.             SET dia = 'SM';
  31.         ELSE
  32.             SET dia = 'ST';
  33.         END IF;
  34.  
  35.     END CASE;
  36.     SELECT DISTINCT ea.Codigo_arbitro
  37.     FROM EQUIPO_ARBITRAL ea
  38.         INNER JOIN OFICIAL of ON ea.Codigo_arbitro=o.Codigo_arbitro
  39.         INNER JOIN DISPONIBILIDAD d ON o.Codigo_arbitro=d.Codigo_arbitro
  40.     WHERE d.dia=dia;
  41. END$$
  42.  
  43. delimiter ;
Así escrito, devolvería una tabla de códigos de árbitros disponibles para un partido determinado.
Lo que no queda claro es para qué mandas el parámetro "pabellon", porque no tiene uso dentro ni siquiera dentro de tu SP.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)