none
Ayuda con script SQL (Store Procedure) RRS feed

  • Pregunta

  • Hola amigos de msdn, quisiera que me ayudenn con este problemilla, tengo una tabla cual esta relacionada con otras varias, el detealle esta en que cuando hago mi consulta por medio de un Proc, este solo me lista los registros que tienen toooodos los datos llenos y los que tienen por ahi algun campo vacio o null simplemente no los lista, como soluciono este tema?, dejo mi script para que me puedan ayudar, gracias:

    CREATE PROCEDURE spListarEmpleados AS BEGIN SELECT P.NroDoc AS DNI, P.ApPaterno AS [APELLIDO PATERNO], P.ApMaterno AS [APELLIDO MATERNO], P.Nombres AS [NOMBRES], P.RUC, E.FecIngreso AS [FECHA DE INGRESO], E.FecTermino AS [FECHA DE RETIRO], NA.NombreNivel AS ESTUDIOS,

    --En este caso Es.Profesion AS PROFESIÓN, puede no tener carrera prof. y por ese motivo puede quedar vacío,

    el problema es cuando listo solo lista los registros con carrera profesional :'(.

    Es.Profesion AS PROFESIÓN, C.NombreCargo AS CARGO, C.Sueldo, A.NombreArea AS AREA, E.turno, E.tipotrabajador AS [TIPO DE TRABAJADOR], E.TipoContrato AS [TIPO DE CONTRATO], R.AbrevRegimen AS RÉGIMEN, F.Nombre AS [FONDO DE PENSIONES], B.NomBanco AS BANCO, E.NroCuenta, E.Estado AS ESTADO FROM empleado E INNER JOIN Persona P ON E.idpersona = P.IdPersona INNER JOIN NivelAcademico NA ON E.IdNivel = NA.IdNivel INNER JOIN Estudios Es ON E.IdEstudios = Es.IdEstudios INNER JOIN Cargo C ON E.IdCargo = C.IdCargo INNER JOIN Area A ON E.IdArea = A.IdArea INNER JOIN Regimen R ON E.IdRegimen = R.IdRegimen INNER JOIN FondoPension F ON E.IdFondo = F.IdFondo INNER JOIN Banco B ON E.IdBanco = B.IdBanco END GO

    Espero puedan ayudarme con este asuntito, gracias


    Juan Fernando

    viernes, 23 de marzo de 2018 21:05

Respuestas

  • Esto es lo esperado puesto que estas estableciendo un JOIN a nivel de dichas tablas, para este caso simplemente debes usar un LEFT JOIN Es.Profesion AS PROFESIÓN, de esta manera en caso que la persona no tenga profesión no excluirá dichas filas del resultado final, simplemente se ubicara un valor NULL en caso que lo listes en el SELECT.

    "Oh, the wind, the wind is blowing,through the graves the wind is blowing,Freedom soon will come; then well come from the shadows".The Partisan(Leonard Cohen) Email: me[at]geohernandez.net Blog:www.geohernandez.net

    • Marcado como respuesta Juan_fernando viernes, 23 de marzo de 2018 21:40
    viernes, 23 de marzo de 2018 21:20
  • Te recomiendo que cambies todos los INNER JOIN por LEFT JOIN. De esa manera te listará todos los empleados con independencia de que alguno de los campos de la tabla empleado no tenga valor o no tenga pareja en las correspondientes tablas con las que se une.
    • Marcado como respuesta Juan_fernando viernes, 23 de marzo de 2018 21:40
    viernes, 23 de marzo de 2018 21:38

Todas las respuestas

  • Esto es lo esperado puesto que estas estableciendo un JOIN a nivel de dichas tablas, para este caso simplemente debes usar un LEFT JOIN Es.Profesion AS PROFESIÓN, de esta manera en caso que la persona no tenga profesión no excluirá dichas filas del resultado final, simplemente se ubicara un valor NULL en caso que lo listes en el SELECT.

    "Oh, the wind, the wind is blowing,through the graves the wind is blowing,Freedom soon will come; then well come from the shadows".The Partisan(Leonard Cohen) Email: me[at]geohernandez.net Blog:www.geohernandez.net

    • Marcado como respuesta Juan_fernando viernes, 23 de marzo de 2018 21:40
    viernes, 23 de marzo de 2018 21:20
  • Te recomiendo que cambies todos los INNER JOIN por LEFT JOIN. De esa manera te listará todos los empleados con independencia de que alguno de los campos de la tabla empleado no tenga valor o no tenga pareja en las correspondientes tablas con las que se une.
    • Marcado como respuesta Juan_fernando viernes, 23 de marzo de 2018 21:40
    viernes, 23 de marzo de 2018 21:38
  • excelente, muchas graciaas

    Juan Fernando

    viernes, 23 de marzo de 2018 21:41
  • excelente, muchas gracias.

    Juan Fernando

    viernes, 23 de marzo de 2018 21:41