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

[SOLUCIONADO] Insertar Datos en dos tablas relacionadas

Estas en el tema de Insertar Datos en dos tablas relacionadas en el foro de Bases de Datos General en Foros del Web. Hola a todos estuve un buen rato navegando y buscando pero no tengo un ejemplo claro de como registras datos en dos tablas relacionadas estuve ...
  #1 (permalink)  
Antiguo 28/08/2015, 15:37
 
Fecha de Ingreso: abril-2015
Mensajes: 304
Antigüedad: 9 años
Puntos: 2
Insertar Datos en dos tablas relacionadas

Hola a todos estuve un buen rato navegando y buscando pero no tengo un ejemplo claro de como registras datos en dos tablas relacionadas estuve leyendo en una parte del foro y mencionaban el uso de un SP pero no se como hacerlo para dos tablas relacionadas tengo la siguientes tablas
Código MySQL:
Ver original
  1. CREATE TABLE `contacto` (
  2.   `jc_contacto_id` int(11) NOT NULL AUTO_INCREMENT,
  3.   `jc_contacto_nombre` varchar(255) DEFAULT NULL,
  4.   `jc_contacto_apellidos` varchar(255) DEFAULT NULL,
  5.   `jc_contacto_cargo` varchar(255) DEFAULT NULL,
  6.   `jc_telefono_contacto_1` varchar(255) DEFAULT NULL,
  7.   `jc_telefono_contacto_2` varchar(255) DEFAULT NULL,
  8.   `jc_email_trabajo_contacto` varchar(255) DEFAULT NULL,
  9.   `jc_email_personal_contacto` varchar(255) DEFAULT NULL,
  10.   `jc_fecha_actualizacion_contacto` date DEFAULT NULL,
  11.   `jc_empresa_id` char(11) CHARACTER SET latin1 DEFAULT NULL,
  12.   PRIMARY KEY (`jc_contacto_id`)
Código MySQL:
Ver original
  1. CREATE TABLE `empresa` (
  2.   `jc_empresa_id` int(11) NOT NULL AUTO_INCREMENT,
  3.   `jc_empresa_nombre` varchar(255) DEFAULT NULL,
  4.   `jc_empresa_razon_social` varchar(255) DEFAULT NULL,
  5.   `jc_empresa_ruc` varchar(255) DEFAULT NULL,
  6.   `jc_empresa_matriz` varchar(255) DEFAULT NULL,
  7.   `jc_empresa_rubro` varchar(255) DEFAULT NULL,
  8.   `jc_empresa_pais` varchar(255) DEFAULT NULL,
  9.   `jc_empresa_departamento` varchar(255) DEFAULT NULL,
  10.   `jc_empresa_provincia` varchar(255) DEFAULT NULL,
  11.   `jc_empresa_distrito` varchar(255) DEFAULT NULL,
  12.   `jc_empresa_direccion` varchar(255) DEFAULT NULL,
  13.   `jc_empresa_contacto` char(11) CHARACTER SET latin1 DEFAULT NULL,
  14.   `jc_empresa_categoria` varchar(255) DEFAULT NULL,
  15.   `jc_empresa_telefono` varchar(255) DEFAULT NULL,
  16.   `jc_empresa_email` varchar(255) DEFAULT NULL,
  17.   `jc_empresa_pagina_web` varchar(255) DEFAULT NULL,
  18.   `jc_empresa_tipo` varchar(255) DEFAULT NULL,
  19.   `jc_empresa_fecha_actualizacion` date DEFAULT NULL,
  20.   PRIMARY KEY (`jc_empresa_id`)
Gracias por su grata ayuda......
  #2 (permalink)  
Antiguo 28/08/2015, 15:48
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: Insertar Datos en dos tablas relacionadas

que es lo que necesitas? cuando se inserte en un lado en el otro haga?????
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #3 (permalink)  
Antiguo 28/08/2015, 16:05
 
Fecha de Ingreso: abril-2015
Mensajes: 304
Antigüedad: 9 años
Puntos: 2
Respuesta: Insertar Datos en dos tablas relacionadas

bueno seria una maravilla si se pudiera hacer eso pero para eso tengo que darle la instrucción lo que sucede es que en dentro de un insert que hago para la empresa tengo un update para actualizar el id de la empresa dentro de la tabla contacto ya que cuando se registra ese campo se llena en "0" de la siguiente manera
Código SQL:
Ver original
  1. INSERT INTO empresa(jc_empresa_nombre,jc_empresa_razon_social,jc_empresa_ruc,jc_empresa_matriz,                       jc_empresa_rubro,jc_empresa_pais,jc_empresa_departamento,jc_empresa_provincia,jc_empresa_distrito,jc_empresa_direccion,jc_empresa_categoria,
  2.                             jc_empresa_telefono,jc_empresa_email,jc_empresa_pagina_web,jc_empresa_tipo,jc_empresa_contacto,jc_empresa_fecha_actualizacion)
  3.                VALUES('$ne_nombre','$ne_razonsocial','$ne_ruc','$ne_matriz','$ne_rubro','$ne_pais','$ne_departamento','$ne_provincia','$ne_distrito','$ne_direccion','$ne_categoria','$ne_telefono','$ne_correo','$ne_paginaweb','$ne_tipo','$ne_contacto','$ne_fechactualizacion')";
Cita:
Editado: Código de programación no permitido en foros de Bases de Datos.
Leer las normas del foro, por favor.
y por algun motivo un usuario me reporto que los datos se repetían de una empresa y verifique y efectivamente se repetían pero mas no el Id por eso pense que existia un problema con los insert y mejor seria hacer un SP para asegurar la llegada de los datos sin problemas
  #4 (permalink)  
Antiguo 28/08/2015, 16:08
Avatar de 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, 4 meses
Puntos: 2658
Respuesta: Insertar Datos en dos tablas relacionadas

Bueno, por lo pronto, tus tablas no están relacionadas. Al menos no lo están estructuralmente, ya que no has definido ninguna FK formalmente.
Tienes un campo "jc_empresa_id" en ambas tablas pero se trata de columnas incompatibles, ya que en un caso es un INT y en el otro es un CHAR. De ese modo no es posible crear una FK en CONTACTOS, ya que no son columnas del mismo tipo y rango.

Por otro lado, la lógica de inserciones es simple: Insertas primer la tabla EMPRESA, recuperas el ID generado, y lo usas en la insercion en la tabla CLNTACTOS.

No existen inserciones automágicas en las tablas relacionadas. Lo único que haces es asegurar y proteger la consistencia de datos y su integridad, pero no otra cosa. Los INSERT los tienes que hacer en el orden correcto o simplemente te fallarán.

¿Se entiende?
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #5 (permalink)  
Antiguo 28/08/2015, 16:13
 
Fecha de Ingreso: abril-2015
Mensajes: 304
Antigüedad: 9 años
Puntos: 2
Respuesta: Insertar Datos en dos tablas relacionadas

y que me recomiendas para poder corregir este error que ambas columnas sean de tipo INT y en cuanto a los insert segun yo pienso que los estoy realizando bien o como los vez tu Gracias por tu colaboracion
  #6 (permalink)  
Antiguo 28/08/2015, 16:19
Avatar de 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, 4 meses
Puntos: 2658
Respuesta: Insertar Datos en dos tablas relacionadas

Cita:
y que me recomiendas para poder corregir este error que ambas columnas sean de tipo INT
Tendría que tomar esto como una pregunta retórica. En serio...

¿Cómo que qué te recomiendo?
¿No es OBVIO?
Debes modificar las columnas para que sean iguales... Mismo tipo de dato y rango de la FK respecto de la PK referida.

¿Tienes realmente claro qué es una FK?
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #7 (permalink)  
Antiguo 28/08/2015, 16:31
 
Fecha de Ingreso: abril-2015
Mensajes: 304
Antigüedad: 9 años
Puntos: 2
Respuesta: Insertar Datos en dos tablas relacionadas

Si te entiendo y seguí tu recomendación y ahora mi tabla esta asi
Código MySQL:
Ver original
  1. CREATE TABLE `contacto` (
  2.   `jc_contacto_id` int(11) NOT NULL AUTO_INCREMENT,
  3.   `jc_empresa_id` int(11) NOT NULL,
  4.   `jc_contacto_nombre` varchar(255) DEFAULT NULL,
  5.   `jc_contacto_apellidos` varchar(255) DEFAULT NULL,
  6.   `jc_contacto_cargo` varchar(255) DEFAULT NULL,
  7.   `jc_telefono_contacto_1` varchar(255) DEFAULT NULL,
  8.   `jc_telefono_contacto_2` varchar(255) DEFAULT NULL,
  9.   `jc_email_trabajo_contacto` varchar(255) DEFAULT NULL,
  10.   `jc_email_personal_contacto` varchar(255) DEFAULT NULL,
  11.   `jc_fecha_actualizacion_contacto` date DEFAULT NULL,
  12.   PRIMARY KEY (`jc_contacto_id`,`jc_empresa_id`)
  #8 (permalink)  
Antiguo 28/08/2015, 17:10
Avatar de 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, 4 meses
Puntos: 2658
Respuesta: Insertar Datos en dos tablas relacionadas

OK.
Ahora te falta la foreign key.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #9 (permalink)  
Antiguo 28/08/2015, 17:24
 
Fecha de Ingreso: abril-2015
Mensajes: 304
Antigüedad: 9 años
Puntos: 2
Respuesta: Insertar Datos en dos tablas relacionadas

Ahora hice los cambios y esta asi
Código MySQL:
Ver original
  1. CREATE TABLE `contacto` (
  2.   `jc_contacto_id` int(11) NOT NULL AUTO_INCREMENT,
  3.   `jc_empresa_id` int(11) DEFAULT NULL,
  4.   `jc_contacto_nombre` varchar(255) DEFAULT NULL,
  5.   `jc_contacto_apellidos` varchar(255) DEFAULT NULL,
  6.   `jc_contacto_cargo` varchar(255) DEFAULT NULL,
  7.   `jc_telefono_contacto_1` varchar(255) DEFAULT NULL,
  8.   `jc_telefono_contacto_2` varchar(255) DEFAULT NULL,
  9.   `jc_email_trabajo_contacto` varchar(255) DEFAULT NULL,
  10.   `jc_email_personal_contacto` varchar(255) DEFAULT NULL,
  11.   `jc_fecha_actualizacion_contacto` date DEFAULT NULL,
  12.   PRIMARY KEY (`jc_contacto_id`),
  13.   KEY `jc_empresa_id` (`jc_empresa_id`),
  14.   CONSTRAINT `contacto_ibfk_1` FOREIGN KEY (`jc_empresa_id`) REFERENCES `empresa` (`jc_empresa_id`)

ahora revisare mis insert

Etiquetas: relacionadas, tabla, tablas
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 17:35.