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

tengo dos tablas y quiero relacionarlas dos veces lo trato de hacr con foreign key.

Estas en el tema de tengo dos tablas y quiero relacionarlas dos veces lo trato de hacr con foreign key. en el foro de Mysql en Foros del Web. bueno mi dua es que tengo tabla1 con los campos idtabla1 , nombre y tengo la tabla2 con los campos idtabla2, idtabla1_1,idtabla1_2,nombre. lo que quiero ...
  #1 (permalink)  
Antiguo 13/02/2012, 20:55
 
Fecha de Ingreso: febrero-2012
Ubicación: lima-peru
Mensajes: 24
Antigüedad: 12 años, 10 meses
Puntos: 0
Mensaje tengo dos tablas y quiero relacionarlas dos veces lo trato de hacr con foreign key.

bueno mi dua es que tengo tabla1 con los campos idtabla1 , nombre y tengo la tabla2 con los campos idtabla2, idtabla1_1,idtabla1_2,nombre. lo que quiero es relacionar los campos idtabla1_1,idtabla1_2 de la tabla2 con el campo idtabla1 de la tabla1.

mi codigo es el siguiedrop database if exists prueba;

create database prueba;

use prueba;

create table tabla1
(
idtabla1 integer primary key,
nombre varchar(50)
)ENGINE=InnoDB DEFAULT CHARSET=utf8;

insert into tabla1 values(1,'oscar');
insert into tabla1 values(2,'Carlos');

create table tabla2
(
idtabla2 integer ,
idtabla1_1 integer ,
idtabla1_2 integer,
nombre varchar (50),
primary key(idtabla2,idtabla1_1,idtabla1_2),
foreign key(idtabla1_1,idtabla1_2)
references tabla1(idtabla1)
)ENGINE=InnoDB DEFAULT CHARSET=utf8;


insert into tabla2 values (1,1,2,'oskitar');


y me bota error 1239

por favor ayudame resien estoy empesando con mysql

la imegen del modelo de la tabla

http://img716.imageshack.us/img716/246/relan.png
  #2 (permalink)  
Antiguo 13/02/2012, 21:30
Avatar de Ribon  
Fecha de Ingreso: septiembre-2010
Ubicación: El firmamento
Mensajes: 487
Antigüedad: 14 años, 3 meses
Puntos: 91
Respuesta: tengo dos tablas y quiero relacionarlas dos veces lo trato de hacr con for

La razon es porque está buscando 2 campos para la relación foranea en la tabla 1
comprueba si esto te sirve

Código MySQL:
Ver original
  1. create table tabla2
  2. (
  3. idtabla2 int PRIMARY KEY,
  4. idtabla1_1 int ,
  5. idtabla1_2 int,
  6. nombre varchar (50),
  7.  
  8.   INDEX T1_FK1 (idtabla1_1)
  9.   foreign key(idtabla1_1)
  10.   references tabla1(idtabla1),
  11.  
  12.   INDEX T1_FK2 (idtabla1_2)
  13.   foreign key (idtabla1_2)
  14.   references tabla1(idtabla1)
  15.  

Lo otro, no se bien la estructura de tu tabla, pero idtabla2 no es siempre único?
o sea lo digo porque en mi ejemplo solo puse idtabla2 como primary ke y los otros campos les cree un index que es requisito para que puedan ser llaves foraneas

Saludos.

PD: el modelo lo hiciste con mysql workbench, el tiene una herramienta de forward engineering para generar el codigo de creación de las tablas xD!
__________________
Utilice el Highlight para mostrar código, mis ojos se lo agradecerán :)
qué es esto? :O -> http://i48.tinypic.com/5x3kzs.png
Ya sabes :)
  #3 (permalink)  
Antiguo 13/02/2012, 22:14
 
Fecha de Ingreso: febrero-2012
Ubicación: lima-peru
Mensajes: 24
Antigüedad: 12 años, 10 meses
Puntos: 0
Mensaje Respuesta: tengo dos tablas y quiero relacionarlas dos veces lo trato de hacr con for

Hola,
Muchas gracias ya me salio la relacion gracias a tu ayuda!
pero ahora tengo otro problema! al momento de selecionar me sale doble registro :S

Código SQL:
Ver original
  1. INSERT INTO tabla2 VALUES(1,2,1,'oscarzito');
  2. INSERT INTO tabla2 VALUES(2,1,2,'marko');
  3. INSERT INTO tabla2 VALUES(3,2,1,'yo');
  4. INSERT INTO tabla2 VALUES(4,1,2,'el');
  5.  
  6. SELECT tabla2.idtabla2,tabla1.nombre,tabla1.nombre,tabla2.nombre FROM tabla2,tabla1

como puedo solucionarlo?
  #4 (permalink)  
Antiguo 14/02/2012, 07:25
Avatar de Ribon  
Fecha de Ingreso: septiembre-2010
Ubicación: El firmamento
Mensajes: 487
Antigüedad: 14 años, 3 meses
Puntos: 91
Respuesta: tengo dos tablas y quiero relacionarlas dos veces lo trato de hacr con for

Estás haciendo mal los JOIN en el SELECT échale una repasada a este enlace, espero te ayude.

http://mauriciopastrana.com/gadgets-...os-mysql-join/

Saludos.
__________________
Utilice el Highlight para mostrar código, mis ojos se lo agradecerán :)
qué es esto? :O -> http://i48.tinypic.com/5x3kzs.png
Ya sabes :)

Etiquetas: key, primary, recursiva, tablas, foreignkey
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 23:27.