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.
Código SQL:
Ver originalSELECT 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.
Código SQL:
Ver originalSELECT 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