SQL - consulta a tres tablas

 
Vista:

consulta a tres tablas

Publicado por esther (3 intervenciones) el 19/02/2010 13:33:07
Hola a todos y gracias de antemano, explico mi problema

tengo una tabla A que se relaciona con una tabla B y la tabla A tb se relaciona con otra tabla C por el mismo campo.

como puedo hacer la consulta para sacar campos de las tres tablas? se pueden hacer dos inner join a la tabla A?
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: 806
Bronce
Ha mantenido su posición en SQL (en relación al último mes)
Gráfica de SQL

RE:consulta a tres tablas

Publicado por Leonardo Josue (1173 intervenciones) el 19/02/2010 17:55:22
Claro que puedes hacer dos inner join a la tabla A... te pongo un ejemplo, para ver si es más o menos lo que necesitas. Supongamos que tenemos una tabla A con los campos ID y Nombre. Tenemos una tabla B con el campo ID y Apellido_Paterno y tenemos una tabla C con el Campo ID y Apellido_Materno lo que queremos entonces es obtener el nombre completo de una persona. lo que deberíamos de hacer es algo como esto,

SELECT A.*, B.*, C.*
FROM A
INNER JOIN B ON A.Id = B.Id
INNER JOIN C ON A.Id = C.Id;

Para algunos motores de SQL es necesario especificar un paréntesis para agrupar el primer INNER JOIN, quedaría de la siguiente manera.

SELECT A.*, B.*, C.*
FROM (A
INNER JOIN B ON A.Id = B.Id)
INNER JOIN C ON A.Id = C.Id;

el resultado de la consulta entonces quedaría más o menos así:

A.ID|Nombre|B.ID|Apellido_Paterno|C.ID|Apellido_Materno

Saludos y espero que la información de sea de ayuda.
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

RE:consulta a tres tablas

Publicado por esther (3 intervenciones) el 20/02/2010 11:53:59
Hola Leo, muchas gracias por responder , lo que has comentado es justo lo que pretendo, sin mucho exito...

No hay manera que funcione, te pongo la consulta completa a ver si ves que puede ser. la tabla Personal seria la tabla A que se relaciona con la tabla B per_form y la tabla C seria per_fich, como puedes ver B y C tb se relacionan con otras... Un lio, jeje

select * from (Personal inner join per_form on Personal.id_personal=per_form.n_per) inner join per_fich inner join(Ficha_puesto inner join (Departamentos on Ficha_puesto.departamento=Departartamentos.id_dep) on per_fich.id_fich=Ficha_puesto.id_ficha) on Personal.id_personal=per_fich.id_per
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

RE:consulta a tres tablas

Publicado por esther (3 intervenciones) el 20/02/2010 17:13:50
Lo he conseguido enredando con el generador de consultas de sql server , quedaría así:

"SELECT Personal.nombre, Personal.apellidos, Ficha_puesto.descripcion, Departamentos.nombre FROM Personal INNER JOIN per_form ON Personal.id_personal = per_form.n_per INNER JOIN per_fich ON Personal.id_personal = per_fich.id_per INNER JOIN Ficha_puesto ON per_fich.id_fich = Ficha_puesto.id_ficha INNER JOIN Departamentos ON Ficha_puesto.departamento = Departamentos.id_dep"
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