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

problema consulta multitabla inner join

Estas en el tema de problema consulta multitabla inner join en el foro de SQL Server en Foros del Web. hola comunidad como están.... bueno me a surgido el siguiente problema... tengo una bd en la cual tengo las siguientes tablas: trabajador pkrun_trabajador (tiene como ...
  #1 (permalink)  
Antiguo 18/01/2013, 07:34
 
Fecha de Ingreso: marzo-2009
Ubicación: Coronel
Mensajes: 5
Antigüedad: 15 años, 1 mes
Puntos: 0
problema consulta multitabla inner join

hola comunidad como están....

bueno me a surgido el siguiente problema...

tengo una bd en la cual tengo las siguientes tablas:

trabajador pkrun_trabajador (tiene como clave fk a rut_empresa y cod_faena)
empresa
faena
entrada_trabajador (fk run_trabajador)
salida_trabajador (fk run_trabajador)

entonces realizo la siguiente consulta

Código SQL:
Ver original
  1. SELECT trabajador.run_trabajador, trabajador.nombre_trabajador, entrada.fecha_entrada_trabajador, salida.fecha_salida_trabajador, faena.nombre_faena, empresa.nombre_empresa
  2. FROM trabajador
  3. INNER JOIN entrada_trabajador AS entrada ON entrada.run_trabajador = trabajador.run_trabajador
  4. INNER JOIN salida_trabajador AS salida ON trabajador.run_trabajador = salida.run_trabajador
  5. INNER JOIN empresa ON empresa.rut_empresa = trabajador.rut_empresa
  6. INNER JOIN faena ON faena.cod_faena = trabajador.cod_faena
  7. WHERE trabajador.run_trabajador = xxxxxxxx;
lo que quiero obtener de esta consulta es que muestre lo siguiente

run_trabajador - nombre_trabajador - fecha_entrada - fecha_salida - nombre_empresa - nombre_faena

y de echo obtengo el resultado pero me multiplica la cantidad de registros de la tabla entrada_trabajador con el total de registros de la tabla salida_trabajador...

y ese es mi problema.... si alguien tiene idea de por que ocurre esto?

y como extra como se puede hacer para que cuando el trabajador tenga una fecha de entrada y no de salida en el campo fecha_salida quede en blanco o null?

de antemano gracias

Última edición por gnzsoloyo; 18/01/2013 a las 08:46
  #2 (permalink)  
Antiguo 18/01/2013, 07:36
 
Fecha de Ingreso: marzo-2009
Ubicación: Coronel
Mensajes: 5
Antigüedad: 15 años, 1 mes
Puntos: 0
Respuesta: problema consulta multitabla inner join

pd: espero haber expresado bien el problema :D
  #3 (permalink)  
Antiguo 18/01/2013, 09:00
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: problema consulta multitabla inner join

si te duplica los datos es que al hacer el join en una tabla tienes mas de un registro con el mismo trabajador(supongo que en la salida) aqui lo que puedes hacer es algo asi:

select run_trabajador,nombre_trabajador,fecha_entrada_tra bajador,fecha_salida_trabajador from (
SELECT trabajador.run_trabajador, trabajador.nombre_trabajador, entrada.fecha_entrada_trabajador, salida.fecha_salida_trabajador, faena.nombre_faena, empresa.nombre_empresa
FROM trabajador
INNER JOIN entrada_trabajador AS entrada ON entrada.run_trabajador = trabajador.run_trabajador
INNER JOIN salida_trabajador AS salida ON trabajador.run_trabajador = salida.run_trabajador
INNER JOIN empresa ON empresa.rut_empresa = trabajador.rut_empresa
INNER JOIN faena ON faena.cod_faena = trabajador.cod_faena
WHERE trabajador.run_trabajador = xxxxxxxx
) as t1 group by run_trabajador,nombre_trabajador,fecha_entrada_tra bajador,fecha_salida_trabajador

prueba con eso :), de si quieres que salga aun cuando no tenga registros en alguna tabla, para eso maneja left join en lugar de inner join ;)

saludos!
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #4 (permalink)  
Antiguo 18/01/2013, 11:05
 
Fecha de Ingreso: marzo-2009
Ubicación: Coronel
Mensajes: 5
Antigüedad: 15 años, 1 mes
Puntos: 0
Respuesta: problema consulta multitabla inner join

gracias compañero funciono perfecto
  #5 (permalink)  
Antiguo 18/01/2013, 11:20
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: problema consulta multitabla inner join

de nada un placer :)
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me

Etiquetas: inner-join, select
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 08:12.