Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

Pierdo registros en otra tabla al modificar una

Estas en el tema de Pierdo registros en otra tabla al modificar una en el foro de Mysql en Foros del Web. Hola foreros: Tengo algunas dudas con esta pequeña practica que estoy haciendo. Bueno, las dos tablas son creadas correctamente, asi como la introduccion de datos ...
  #1 (permalink)  
Antiguo 11/09/2009, 15:53
 
Fecha de Ingreso: agosto-2009
Ubicación: Vigo - Galiza
Mensajes: 17
Antigüedad: 14 años, 8 meses
Puntos: 0
Pierdo registros en otra tabla al modificar una

Hola foreros:
Tengo algunas dudas con esta pequeña practica que estoy haciendo.
Bueno, las dos tablas son creadas correctamente, asi como la introduccion de datos de las 2 tablas. La tabla partidos tiene 17 entradas. El problema viene cuando quiero modificar la tabla equipos. Una vez realizado el cambio en equipos la tabla partidos pierde bastantes entradas, ¿me podriais ayudar? Muchas gracias.

Otro problema es el siguiente:
Quiero eliminar aquellos equipos que no hayan jugado un partido, yo tengo esta consulta pero me devuelve los equipos que no han jugado algun partido en casa o fuera, pero no la interseccion de ambas.
SELECT nombre FROM equipos e WHERE nombre NOT IN
(SELECT nombre FROM equipos e, partidos p1, partidos p2
WHERE e.registro=p1.id_equipo1 AND e.registro=p2.id_equipo2);





# creamos la dase de datos
Create database if not exists liga_baloncesto;
Show databases;

# la abrimos
Use liga_baloncesto;

# creamos la tabla equipos
Create table if not exists equipos (
registro INT auto_increment,
nombre VARCHAR(30) NOT NULL,
nombre_entrenador VARCHAR(35),
nombre_cancha VARCHAR(30),
poblacion VARCHAR(25),
anio_fundacion INT(4),
anotaciones BLOB,
CONSTRAINT PK_resitro_equ PRIMARY KEY (registro));
ALTER TABLE equipos ADD UNIQUE (registro);
Show columns from equipos;


# creamos la tabla partidos
Create table if not exists partidos (
registro INT auto_increment,
id_equipo1 INT,
resultado_equipo1 INT,
id_equipo2 INT,
resultado_equipo2 INT,
constraint UQ_registro_part unique (registro),
constraint PK_registro_part primary key (registro));

alter table partidos add
CONSTRAINT FOREIGN KEY (id_equipo1)
REFERENCES equipos(registro) ON DELETE CASCADE;
alter table partidos add
CONSTRAINT FOREIGN KEY (id_equipo2)
REFERENCES equipos(registro) ON DELETE CASCADE;

Show columns from partidos;

#drop table partidos;

# introducimos los datos de la tabla equipos
Insert into equipos values (1,"CF barceloneto", "Pedro A.", "Barcelona Arena", "Barcelona", 1918, "Este equipo fue el primero que jug un torneo europeo");
Insert into equipos values (2,"R. Madride", "Juan A.", "San Yago", "Madrid", 1941, "Este equipo fue campeon el primer que jug un torneo europeo");
Insert into equipos values (3,"Barcelona Juniors", "Santiago M.", "Municipal Barna", "Barcelona", 1988, "Este equipo no ha ganado nada todavia");
Insert into equipos values (4,"Los heroes", "Marcos R.", "Palacio deportes", "Barcelona", 1960, "Su presidente esta imputado en un caso de blanqueo de capitales");
Insert into equipos values (5,"Campeones", "Juan S.", "Herricoaria", "Bilbao", 1943, "Se fundo con ex-presos comunes que descubrieron el deporte como valvula de escape");
Insert into equipos values (6,"Los aguilillas", "Carlos Z.", "Municipal", "Madrid", 1954, "Esta pendiente de una sancion por intoxicar a sus contricantes en el ultimo partido con yogures caducados");
Insert into equipos values (7,"San pepes", "Luis L.", "Cachafeiro", "Santiago", 1924, "Este equipo pertenece a un magnate de los percebes");
Insert into equipos values (8,"Los apostoles", "Sonia F.", "Palacio Diputacion", "Cadiz", 1941, "Sus jugadores tienen una charanga muy apreciada en la ciudad");
Insert into equipos values (9,"Jerifaltes.com", "Roberto F.", "Barcelona Arena", "Barcelona", 1972, "Es el equipo mas sucio de la competicion");

# introducimos los datos de la tabla partidos
Insert into partidos values (1,1,60,2,65);
Insert into partidos values (2,1,64,3,85);
Insert into partidos values (3,1,70,4,55);
Insert into partidos values (4,1,40,5,70);
Insert into partidos values (5,1,45,6,84);
Insert into partidos values (6,2,75,3,94);
Insert into partidos values (7,2,66,4,87);
Insert into partidos values (8,2,98,5,104);
Insert into partidos values (9,2,102,6,88);
Insert into partidos values (10,3,84,6,87);
Insert into partidos values (11,3,92,5,91);
Insert into partidos values (12,3,84,9,76);
Insert into partidos values (13,4,94,5,67);
Insert into partidos values (14,4,84,6,74);
Insert into partidos values (15,4,62,7,89);
Insert into partidos values (16,4,65,8,69);
Insert into partidos values (17,4,69,9,98);


# visualiza todos los registros las dos tablas
SELECT * FROM equipos, partidos;

# actualiza algunos datos de las dos tablas
REPLACE into equipos values (2,"R. Madriditis", "Maria A.", "San Yago", "Madrid", 1941, "Este equipo fue campeon el primer que jug un torneo europeo");
REPLACE into equipos values (4,"Los heroes", "Gustavo F.", "Palacio deportes", "Badalona", 1960, "Su presidente esta imputado en un caso de blanqueo de capitales");
  #2 (permalink)  
Antiguo 12/09/2009, 12:21
 
Fecha de Ingreso: agosto-2009
Ubicación: Vigo - Galiza
Mensajes: 17
Antigüedad: 14 años, 8 meses
Puntos: 0
Respuesta: Pierdo registros en otra tabla al modificar una

Yo mismo he encontrado la solucion a UNO de los problemas. Es la referente a que borra registros de una tabla que esta relacionada con otra. Lo primero en la definicion de esa tabla hay que poner ON UPDATE CASCADE para que la actualize, y lo segundo no usar REPLACE sino UPDATE.
Bueno quedo pendiente del otro problema. Por favor ayudadme, gracias.
  #3 (permalink)  
Antiguo 13/09/2009, 19:30
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 2 meses
Puntos: 360
Respuesta: Pierdo registros en otra tabla al modificar una

No has intentado hacer un delete from tabla where campo not in(consulta)?

Nos cuentas como te va
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 05:59.