Oracle - Mostrar registros con referencias a null

   
Vista:

Mostrar registros con referencias a null

Publicado por Carla (1 intervención) el 27/11/2012 08:58:24
Hola, tengo esta select que funciona correctamente y me saca el resultado que que necesito excepto que le falta un campo que es el me me está complicando la existencia porque no hay manera de obtener el resultado deseado. Por eso recurro a vosotros.
Como comento, necesito algo así pero con un campo más. Esta me saca el resultado que yo quiero pero sin devolver el puesto que también necesito.

select DISTINCT u.CO_UNID_ as codigo, u.NO_UNID as unid,
t.NOMBRE as emp,
t. APELLIDO1 as ape1,
t. APELLIDO2 as ape2,
t.CO_EMPLEADO as coemp,
u.TIT_RESP as resp
from UNID u, TRABAJADOR t, TRABUNID e , PUESTO pu
where u.CO_RESPONSABLE= t.ID_TRABAJADOR(+)
and t.ID_TRABAJADOR = e.ID_TRABAJADOR (+)
AND U.ES_SOCIO LIKE 'S'
AND (translate(LOWER(u.UNID_ORG),'áéíóúÁÉÍÓÚäëïöüÄËÏÖÜÑÇ', 'aeiouaeiouaeiouaeiouñç')
LIKE translate(LOWER(USTRIOA.PK_TRANSF.FU_ACC_TR('%A%')),'áéíóúÁÉÍÓÚäëïöüÄËÏÖÜÑÇ', 'aeiouaeiouaeiouaeiouñç') )
order by u.NO_UNID



Y aquí añado otra select con el campo que necesito. El problema es que yo necesito mostrar todas las unidades con el nombre del responsable, cargo y puesto incluso aunque no tengan responsable pero no me salen todas. Pasa que como algunas unidades no tienen responsable, en la tabla TRABUNID no existe ningún registro que me relacione trabajador y unidad y por tanto no sé como hacer para que me los muestre porque he probado de todo. A ver si me pueden ayudar.



select DISTINCT u.CO_UNID as codigo, u.NO_UNID as unid,
t.NOMBRE as emp,
t.APELLIDO1 as ape1,
t.APELLIDO2 as ape2,
t.CO_EMPLEADO as coemp,
u.TIT_RESP as resp,
(Select NO_PUESTO
FROM PUESTO PU
WHERE PU.CO_PUESTO=E.CO_PUESTO
and u.CO_RESPONSABLE = t.ID_TRABAJADOR
and e.TRAB_ID_TRABAJADOR=t.TRAB_ID_TRABAJADOR
) puesto
from UNID u, TRABAJADOR t, TRABUNID e , PUESTO pu
where pu.co_puesto=e.co_puesto
and e.id_trabajador=t.id_trabajador
and e.co_unid=u.co_unid
and u.co_responsable=t.id_trabajador
AND U.ES_SOCIO LIKE 'S'
AND (translate(LOWER(u.UNID_ORG),'áéíóúÁÉÍÓÚäëïöüÄËÏÖÜÑÇ', 'aeiouaeiouaeiouaeiouñç')
LIKE translate(LOWER(USTRIOA.PK_TRANSF.FU_ACC_TR('%A%')),'áéíóúÁÉÍÓÚäëïöüÄËÏÖÜÑÇ', 'aeiouaeiouaeiouaeiouñç') )
order by u.NO_UNID

saludos y gracias de antemano
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

Mostrar registros con referencias a null

Publicado por juan gaete juan.gaete@oracle.com (13 intervenciones) el 21/12/2012 13:10:58
debes usar LEFT JOIN o INNER JOIN

que en tu caso seria en el where

columna *= columna2 --> para el left

columna =* columna2 --> para el right
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