MySQL - join entre 3 tablas

 
Vista:

join entre 3 tablas

Publicado por diego (1 intervención) el 05/11/2017 23:29:32
Hola amigos, tengo un problema que no he podido solucionar y recurro a uds. Les cuento:

Tengo 3 tablas

Tabla1(Pk_rut, nombre)

Tabla2(PK_num, FK_rut)

Tabla3(PK_serial, FK_num)


Entre muchos otros datos mas, pero para el ejemplo sirve.

Por obligacion necesito hacerle la consulta a 'Tabla1' pero a la vez tengo que recuperar datos de las 3 tablas.

La consulta la hago a 'Tabla1' con un 'inner join' a 'tabla2' pero no puedo llegar a 'Tabla3'

Si ocupo 'select * from (Tabla1, Tabla3)...' Me duplica una enorme cantidad de datos y cuando la consulta deberia estar mostrando 4 filas me muestra mas de 100.

Agradesco un monton cualquier info que me puedan brindar.

Saludos
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 953
Oro
Ha mantenido su posición en MySQL (en relación al último mes)
Gráfica de MySQL

join entre 3 tablas

Publicado por leonardo_josue (414 intervenciones) el 06/11/2017 15:49:09
Hola diego:

1
2
3
Por obligacion necesito hacerle la consulta a 'Tabla1' pero a la vez tengo que recuperar datos de las 3 tablas.
 
La consulta la hago a 'Tabla1' con un 'inner join' a 'tabla2' pero no puedo llegar a 'Tabla3'

¿A qué te refieres con que no puedes llegar a Tabla3?

1
Si ocupo 'select * from (Tabla1, Tabla3)...' Me duplica una enorme cantidad de datos

Tal como lo estás poniendo, si no haces ningún join explícito, lo que tienes es un producto cartesiano, por lo tanto, es posible que te falte colocar las condiciones por las que se unen tus tablas:

1
2
3
..,
where tabla1.campo = tabla2.campo
...

La manera más recomendable de hacer esto es con JOINs... y en realidad no tienes ninguna limitante para hacer 3, 4 o 100 join's si así lo requieres.

No nos pones datos de ejemplo, pero tratando de jugar al adivino, para tu caso sería algo así:

1
2
3
4
SELECT *
FROM Tabla1
INNER JOIN Tabla2 ON Tabla2.Fk_rut = Tabla1.Pk_rut
INNER JOIN Tabla3 ON Tabla3.Fk_num = Tabla2.Pk_num

Si esto no es lo que quieres, postea algunos datos de prueba de tus tablas y a partir de esos datos dinos qué es lo que esperas obtener como salida.

Saludos
Leo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar