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

Relacionar dos tablas en Mysql

Estas en el tema de Relacionar dos tablas en Mysql en el foro de Mysql en Foros del Web. Hola a todos no tengo mucho tiempo en mysql y en visto por este mismo foro preguntas relacionas a esta que estoy relacionando consultando pues ...
  #1 (permalink)  
Antiguo 21/05/2015, 10:40
 
Fecha de Ingreso: abril-2015
Mensajes: 304
Antigüedad: 9 años
Puntos: 2
Relacionar dos tablas en Mysql

Hola a todos no tengo mucho tiempo en mysql y en visto por este mismo foro preguntas relacionas a esta que estoy relacionando consultando pues verán tengo dos tablas clientes y contacto a cada una le he colocado una clave foranea de la siguiente Manera
Código MySQL:
Ver original
  1. CREATE TABLE `clientes` (
  2.   `jc_cliente_id` int(11) NOT NULL AUTO_INCREMENT,
  3.   `jc_contacto_id` int(11) NOT NULL,
  4.   `jc_cliente_nombre` varchar(255) DEFAULT NULL,
  5.   `jc_cliente_razon_social_1` varchar(255) DEFAULT NULL,
  6.   `jc_cliente_razon_social_2` varchar(255) DEFAULT NULL,
  7.   `jc_cliente_empresa_matriz` varchar(255) DEFAULT NULL,
  8.   `jc_cliente_rubro` varchar(255) DEFAULT NULL,
  9.   `jc_cliente_pais` varchar(255) DEFAULT NULL,
  10.   `jc_cliente_provincia` varchar(255) DEFAULT NULL,
  11.   `jc_cliente_distrito` varchar(255) DEFAULT NULL,
  12.   `jc_cliente_direccion` varchar(255) DEFAULT NULL,
  13.   `jc_cliente_categoria` varchar(255) DEFAULT NULL,
  14.   `jc_cliente_telefono` varchar(255) DEFAULT NULL,
  15.   `jc_cliente_email` varchar(255) DEFAULT NULL,
  16.   `jc_cliente_redes_sociales` varchar(255) DEFAULT NULL,
  17.   `jc_cliente_fecha_actualizacion` date DEFAULT NULL,
  18.   `jc_cliente_tipo` varchar(255) DEFAULT NULL,
  19.   PRIMARY KEY (`jc_cliente_id`,`jc_contacto_id`)
esta tabla es la de clientes ahora qui la de contacto
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_sexo` varchar(255) DEFAULT NULL,
  6.   `jc_contacto_fecha_nacimiento` date DEFAULT NULL,
  7.   `jc_contacto_cargo` varchar(255) DEFAULT NULL,
  8.   `jc_telefono_contacto` varchar(255) DEFAULT NULL,
  9.   `jc_email_trabajo_contacto` varchar(255) DEFAULT NULL,
  10.   `jc_email_personal_contacto` varchar(255) DEFAULT NULL,
  11.   `jc_dni_contacto` varchar(255) DEFAULT NULL,
  12.   `jc_direccion_contacto` varchar(255) DEFAULT NULL,
  13.   `jc_redes_sociales_contacto` varchar(255) DEFAULT NULL,
  14.   `jc_fecha_actualizacion_contacto` varchar(255) DEFAULT NULL,
  15.   PRIMARY KEY (`jc_contacto_id`)
en la primera tabla esta el id del contacto mi pregunta es si tendría que crear un tercera tabla para que cuando se consulte el cliente jale la información del contacto
  #2 (permalink)  
Antiguo 21/05/2015, 11:15
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: Relacionar dos tablas en Mysql

No, al momento de hacer tus querys harias un join con las 2 tablas usando tu campo en comun, y en tu caso agregar el id_cliente al contacto :)
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #3 (permalink)  
Antiguo 21/05/2015, 11:22
 
Fecha de Ingreso: abril-2015
Mensajes: 304
Antigüedad: 9 años
Puntos: 2
Respuesta: Relacionar dos tablas en Mysql

y cuando registre un cliente y el id del contacto también debería pasar el id de contacto en la tabla de clientes, es decir si debería aumentar
  #4 (permalink)  
Antiguo 21/05/2015, 11:30
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: Relacionar dos tablas en Mysql

a ver vamos por partes, que es un cliente y que es un contacto?? y cual es la relacion entre estas 2 tablas?
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #5 (permalink)  
Antiguo 21/05/2015, 11:39
 
Fecha de Ingreso: abril-2015
Mensajes: 304
Antigüedad: 9 años
Puntos: 2
Respuesta: Relacionar dos tablas en Mysql

El cliente es una empresa y el contacto es la persona que coordinas el servicio o producto que le estés ofreciendo a la empresa es decir una tabla guarda los datos de la empresa y la otra tabla los datos de la persona que trabaja en esa empresa como mencione antes con quien coordinas todo lo que desee la empresa.
  #6 (permalink)  
Antiguo 21/05/2015, 11:45
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: Relacionar dos tablas en Mysql

Según esa descripcion tienes un error de diseño: La tabla clientes no puede tener una PK compuesta por el ID de cliente y el ID de contacto. Eso es absurdo.
Si la el Cliente es una Empresa, y el Contacto es el un miembro o vinculo con la empresa, ese contacto DEPENDE de la tabla Cliente, pero no es parte de ella. Sería otra tabla empresa_contacto, que vincule ambos compoenntes.
El que en esa nueva tabla, donde el contacto sea UNIQUE y el cliente también, es un tema de diseño, y sólo correspondería si por cada empresa sólo pude haber un único contacto. Si hay dos, la tabla permanece, pero la condición UNIQUE por cada campo se pierde.

¿Un cotnacto puede serlo de más de una empresa?
¿UNa empresa puede tener más de un contacto?
__________________
¿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 21/05/2015, 11:48
 
Fecha de Ingreso: abril-2015
Mensajes: 304
Antigüedad: 9 años
Puntos: 2
Respuesta: Relacionar dos tablas en Mysql

Pues por eso mi consulta en este caso un contacto es solo de una empresa y una empresa puede tener muchos contactos
  #8 (permalink)  
Antiguo 21/05/2015, 11:51
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: Relacionar dos tablas en Mysql

entonces podria quedar algo como esto

Clientes
id_cliente mas_datos


contactos
id_contacto mas_datos

clientes_contactos
id_cliente id_contacto


Y en tu tabla clientes contactos creas la relacion de las 2 tablas :)
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #9 (permalink)  
Antiguo 21/05/2015, 11:55
 
Fecha de Ingreso: abril-2015
Mensajes: 304
Antigüedad: 9 años
Puntos: 2
Respuesta: Relacionar dos tablas en Mysql

entonces la nueva tabla seria clientes_contactos la cual debería crear manualmente no es asi o estoy equibicado
  #10 (permalink)  
Antiguo 21/05/2015, 11:58
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: Relacionar dos tablas en Mysql

sip deberias de crearla manualmente, y el llenado de la misma tambien seria manual o usando triggers :)
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #11 (permalink)  
Antiguo 21/05/2015, 12:00
 
Fecha de Ingreso: abril-2015
Mensajes: 304
Antigüedad: 9 años
Puntos: 2
Respuesta: Relacionar dos tablas en Mysql

como mencione anteriormente soy principiante en mysql y no se como hacer trigerrs, cuando dices manualmente te refieres que desde la aplicación o desde las tablas
  #12 (permalink)  
Antiguo 21/05/2015, 12:09
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: Relacionar dos tablas en Mysql

eso lo tendrias que validar tu, despues de cada insercion de contacto deberias de insertar el valor correspondiente en la tabla cliente_contacto :)
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #13 (permalink)  
Antiguo 21/05/2015, 12:27
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: Relacionar dos tablas en Mysql

Lo usual es construir una funcioanlidad en la aplciación para poder realizar ese tipo de altas. De ese modo podrías tener un buen control de lo que pasa.
Hacelo manualmente es una muy mala idea, proclive a errores.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #14 (permalink)  
Antiguo 21/05/2015, 12:30
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: Relacionar dos tablas en Mysql

Cita:
Iniciado por gnzsoloyo Ver Mensaje
Lo usual es construir una funcioanlidad en la aplciación para poder realizar ese tipo de altas. De ese modo podrías tener un buen control de lo que pasa.
Hacelo manualmente es una muy mala idea, proclive a errores.
Como bien dicen gnzoloyo esto deberias de hacerlo de manera automatica, al decir manual me refiero a que no se va a hacer magicamente, sino que tu tendrias que llenar los datos en las tablas requeridas :)
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #15 (permalink)  
Antiguo 21/05/2015, 13:22
 
Fecha de Ingreso: abril-2015
Mensajes: 304
Antigüedad: 9 años
Puntos: 2
Respuesta: Relacionar dos tablas en Mysql

Si justamente estuve leyendo sobre los triggers y veo que son muy beneficiosos pero antes tendré que aprender como usarlos

Etiquetas: fecha, relacionar, sql, 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 11:14.