Ayuda MySQL!! Alguien sabee? URGENTE!!!

davidd1991

mañana tengo que entregar un ejercicio de MySQL para clase si no quiero acabar mal xD
alguien que sepa de MySQL puede echarme una mano? xD es que no me sale!!

el ejercicio es un Trigger para una base de datos:

La BD futbol tiene la tabla partidos donde tenemos los datos de cada partido: equipo local, equipo visitante, rlocal y rvisitante entre otras. Seria interesante hacer que el resultado del partido se actualice automaticamente cada vez que modifiquemos los goles que cada jugador puede marcar en un partido (tabla jugador-partido). De esta manera tendremos siempre una coherencia entre el resultado de un partido y el total de goles que los jugadores han marcado en este partido

Se trata de hacer los triggers necesarios para automatizar el resultado del partido basandose en la tabla jugador-partido

PD: no creo que lo sepais pero por intentar...

RedHat

está claro que no tienes ni idea de lo que tienes que entregar mañana.

solo por poner que nosotros no sabemos hacerlo... deberían darte un golpe de remo... xD

alguno vendra por estos lares y te dará la solución, asi que al tanto con el F5.

davidd1991

#2
esta tan claro como el agua, no tengo ni puta idea de como se hace xDDD

ah!! sigo sin creer que lo sepas hacer jeje

EDITO: lo siento, lo sabeis hacer! lo sabes hacer y lo sabeis hacer, y no solo eso, eso para vosotros es un minuto, un minuto de vuestra vida para hacer feliz a una persona!!
xDDD

JuAn4k4

Te doy la idea.

Cada vez que se haga un inset / update en la tabla jugador-partido, realizas un update en la tabla partido, para el partido en el que se realiza el insert ( new.idpartido ) actualizando el valor del resultado ( que no dicen como esta puesto ), para el equipo al que pertenezca el jugador.

No te dan el esquema relacional ? Esque vaya tela la forma de explicar como estan las tablas..

yo me imagino

jugador(idjugador, idequipo, ... )
jugador-partido (idjugador, idpartido,goles)
partido(idequipo_local,ideqipo_visitante, rlocal? , rvisitante? )
equipo(idequipo, ... )

por lo que, al insertar en jugador-partido
after insert ..
when (( new.goles - old.goles ) <> 0 )
gol jugador-partido.goles%type;
EQ jugador.idequipo%type;

select idequipo into EQ from jugador where idjugador = new.idjugador ;

if ( EQ == (select idequipo_local from partido where idpartido = new.idpartido ) )
/* y aqui el update en la tabla partido ( imagino que rlocal sera los goles o que ? ) /
else
if ( EQ== (select idequipo_visitante from partido where idpartido = new.idpartido ) )
/
y aqui el update en la tabla partido ( imagino que rvisitante sera los goles ) */
end if;
end if;
end;
/

davidd1991

#4
ok, pero asi me saldria el resultado del local, me faltaria el resultado del visitante, ese es el problema!

JuAn4k4

Vaya ejercicio te tienes que inventar como esta la bd. xD

En el update metes , lo que hay + goles. Por si cambian hacia arriba o hacia abajo los goles de un jugador. Yo suelo usar oracle asique no se si la sintaxis inventada q me he pegao funciona xD

davidd1991

DELIMITER |
CREATE TRIGGER triger BEFORE UPDATE ON tabla1
FOR EACH ROW BEGIN
UPDATE tabla2 SET NEW.resultadolocal = OLD.resultadolocal + (SELECT goles FROM jugador-partido) , NEW.resultadovisitante = OLD.resultadovisitante + (SELECT goles FROM jugador-partido);
END; |
DELIMITER;

hay algo bien en lo que acabo de escribir? xD

Usuarios habituales

  • davidd1991
  • JuAn4k4
  • RedHat