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

No obtengo registros con referencias a null

Estas en el tema de No obtengo registros con referencias a null en el foro de Oracle en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 27/11/2012, 02:10
 
Fecha de Ingreso: septiembre-2007
Mensajes: 29
Antigüedad: 16 años, 7 meses
Puntos: 0
No obtengo registros con referencias a null

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 original
  1. SELECT DISTINCT u.CO_UNID_ AS codigo, u.NO_UNID AS unid,
  2.  t.NOMBRE  AS emp,
  3.  t. APELLIDO1  AS ape1,
  4.  t. APELLIDO2  AS ape2,
  5. t.CO_EMPLEADO  AS coemp,
  6. u.TIT_RESP AS resp
  7. FROM UNID u, TRABAJADOR t, TRABUNID e , PUESTO pu
  8. WHERE u.CO_RESPONSABLE= t.ID_TRABAJADOR(+)
  9. AND t.ID_TRABAJADOR = e.ID_TRABAJADOR (+)
  10. AND U.ES_SOCIO LIKE 'S'  
  11. AND (translate(LOWER(u.UNID_ORG),'áéíóúÁÉÍÓÚäëïöüÄËÏÖÜÑÇ', 'aeiouaeiouaeiouaeiouñç')
  12. LIKE translate(LOWER(USTRIOA.PK_TRANSF.FU_ACC_TR('%A%')),'áéíóúÁÉÍÓÚäëïöüÄËÏÖÜÑÇ', 'aeiouaeiouaeiouaeiouñç') )
  13. 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 original
  1. SELECT DISTINCT u.CO_UNID AS codigo, u.NO_UNID AS unid,
  2.  t.NOMBRE  AS emp,
  3.  t.APELLIDO1  AS ape1,
  4.  t.APELLIDO2  AS ape2,
  5. t.CO_EMPLEADO  AS coemp,
  6. u.TIT_RESP AS resp,
  7. (SELECT NO_PUESTO
  8. FROM PUESTO PU
  9. WHERE PU.CO_PUESTO=E.CO_PUESTO
  10. AND u.CO_RESPONSABLE = t.ID_TRABAJADOR
  11. AND e.TRAB_ID_TRABAJADOR=t.TRAB_ID_TRABAJADOR
  12. ) puesto
  13. FROM UNID u, TRABAJADOR t, TRABUNID e , PUESTO pu
  14. WHERE pu.co_puesto=e.co_puesto
  15. AND e.id_trabajador=t.id_trabajador
  16. AND e.co_unid=u.co_unid
  17. AND u.co_responsable=t.id_trabajador
  18. AND U.ES_SOCIO LIKE 'S'  
  19. AND (translate(LOWER(u.UNID_ORG),'áéíóúÁÉÍÓÚäëïöüÄËÏÖÜÑÇ', 'aeiouaeiouaeiouaeiouñç')
  20. LIKE translate(LOWER(USTRIOA.PK_TRANSF.FU_ACC_TR('%A%')),'áéíóúÁÉÍÓÚäëïöüÄËÏÖÜÑÇ', 'aeiouaeiouaeiouaeiouñç') )
  21. ORDER BY u.NO_UNID
saludos y gracias de antemano
  #2 (permalink)  
Antiguo 27/11/2012, 04:12
Avatar de Heimish2000  
Fecha de Ingreso: enero-2011
Ubicación: Madrid
Mensajes: 844
Antigüedad: 13 años, 2 meses
Puntos: 89
Respuesta: No obtengo registros con referencias a null

Lo primero. Para unir tablas usa JOINs, en este caso LEFT JOIN hace lo que quieres, te saca los registros de la primera tabla aunque no existan en la segunda.
  #3 (permalink)  
Antiguo 27/11/2012, 06:11
 
Fecha de Ingreso: septiembre-2007
Mensajes: 29
Antigüedad: 16 años, 7 meses
Puntos: 0
Respuesta: No obtengo registros con referencias a null

Sería así como dices? Es que así tampoco me funciona. He probado ponerle(+) en todas las combinaciones posibles y de ninguna me muestra lo deseado. Por favor si alguien me la puede revisar bien y decirme que hago mal o que tengo que modificar, Es que ya no sé que hacer y llevo así varios dias. Me urge bastante. Un saludo y muchas gracias

Código SQL:
Ver original
  1. SELECT DISTINCT u.CO_UNID AS codigo, u.NO_UNID AS unid,
  2.  t.NOMBRE  AS emp,
  3.  t.APELLIDO1  AS ape1,
  4.  t.APELLIDO2  AS ape2,
  5. t.CO_EMPLEADO  AS coemp,
  6. u.TIT_RESP AS resp,
  7. (SELECT NO_PUESTO
  8. FROM PUESTO PU
  9. WHERE PU.CO_PUESTO=E.CO_PUESTO
  10. AND u.CO_RESPONSABLE = t.ID_TRABAJADOR
  11. AND e.TRAB_ID_TRABAJADOR=t.TRAB_ID_TRABAJADOR
  12. ) puesto
  13. FROM UNID u, TRABAJADOR t, TRABUNID e , PUESTO pu
  14. WHERE pu.co_puesto=e.co_puesto
  15. AND e.id_trabajador=t.id_trabajador
  16. AND e.co_unid=u.co_unid
  17. AND u.co_responsable(+)=t.id_trabajador
  18. AND U.ES_SOCIO LIKE 'S'  
  19. AND (translate(LOWER(u.UNID_ORG),'áéíóúÁÉÍÓÚäëïöüÄËÏÖÜÑÇ', 'aeiouaeiouaeiouaeiouñç')
  20. LIKE translate(LOWER(USTRIOA.PK_TRANSF.FU_ACC_TR('%A%')),'áéíóúÁÉÍÓÚäëïöüÄËÏÖÜÑÇ', 'aeiouaeiouaeiouaeiouñç') )
  21. ORDER BY u.NO_UNID
  #4 (permalink)  
Antiguo 27/11/2012, 07:26
Avatar de Heimish2000  
Fecha de Ingreso: enero-2011
Ubicación: Madrid
Mensajes: 844
Antigüedad: 13 años, 2 meses
Puntos: 89
Respuesta: No obtengo registros con referencias a null

No, no es así como digo. Te dije que usases JOINS para unir las tablas
  #5 (permalink)  
Antiguo 27/11/2012, 07:44
 
Fecha de Ingreso: septiembre-2007
Mensajes: 29
Antigüedad: 16 años, 7 meses
Puntos: 0
Respuesta: No obtengo registros con referencias a null

No sé porqué pensé que era lo mismo. Pero también lo he probado escrito y sigue sin salirme. Gracias por contestar.


Código SQL:
Ver original
  1. SELECT DISTINCT u.CO_UNID AS codigo, u.NO_UNID AS unid,
  2.  t.NOMBRE  AS emp,
  3.  t.APELLIDO1  AS ape1,
  4.  t.APELLIDO2  AS ape2,
  5. t.CO_EMPLEADO  AS coemp,
  6. u.TIT_RESP AS resp,
  7. (SELECT NO_PUESTO
  8. FROM PUESTO PU
  9. WHERE PU.CO_PUESTO=E.CO_PUESTO
  10. AND u.CO_RESPONSABLE = t.ID_TRABAJADOR
  11. AND e.TRAB_ID_TRABAJADOR=t.TRAB_ID_TRABAJADOR
  12. ) puesto
  13. FROM UNID u
  14. LEFT JOIN TRABAJADOR t ON (u.CO_RESPONSABLE=T.ID_TRABAJADOR)
  15. LEFT JOIN TRABUNID e ON (E.ID_TRABAJADOR=U.CO_RESPONSABLE)
  16. LEFT JOIN PUESTO pu ON (pu. CO_PUESTO = E. CO_PUESTO)
  17. WHERE U.ES_SOCIO LIKE 'S'  
  18. AND (translate(LOWER(u.UNID_ORG),'áéíóúÁÉÍÓÚäëïöüÄËÏÖÜÑÇ', 'aeiouaeiouaeiouaeiouñç')
  19. LIKE translate(LOWER(USTRIOA.PK_TRANSF.FU_ACC_TR('%A%')),'áéíóúÁÉÍÓÚäëïöüÄËÏÖÜÑÇ', 'aeiouaeiouaeiouaeiouñç') )
  20. ORDER BY u.NO_UNID

Etiquetas: funcion, null, referencias, registros, select, tabla
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 15:36.