Quantcast
Channel: Filtrar datos de la tabla antes de hacer el Left Join - Stack Overflow en español
Viewing all articles
Browse latest Browse all 3

Filtrar datos de la tabla antes de hacer el Left Join

$
0
0

Se me ha presentado un caso que no se como resolver, estoy intentando filtrar ciertos datos de varias tablas, en este caso pondré solamente una muestra del caso de uso que no se como resolver.

Tabla ESTATUSEMPLEADO : (Tiene muchos mas campos, solo es una muestra)

╔══════════╦═══════╦══════╗║ Codigo   ║ Nombre║ .... ║╠══════════╬═══════╬══════╣║ 1        ║ Juan  ║ .... ║║ 2        ║ José║ .... ║║ 3        ║ Maria ║ .... ║║ 4        ║ Joel  ║ .... ║║ 5        ║ Ramón ║ .... ║║ 6        ║ Teresa║ .... ║║ ....     ║ ....  ║ .... ║╚══════════╩═══════╩══════╝

Tabla NOTIFICACION: (En esta el campo Codigo se puede repetir, es una tabla de Detalles...)

╔══════════╦═══════╦═══════╦════════════╗║ Codigo   ║ Estado║ UserN ║ OtroCampo  ║╠══════════╬═══════╬═══════╬════════════╣║ 4        ║ N     ║ admin ║ Dato1      ║║ 1        ║ S     ║ admin ║ Dato2      ║║ 6        ║ N     ║ admin ║ Dato3      ║║ 1        ║ N     ║ otro  ║ Dato4      ║╚══════════╩═══════╩═══════╩════════════╝

SELECT e.Codigo, e.Nombre,       Leida = case when n.Estado = 'S' then 'S' else 'N' end,       n.OtroCampo,FROM ESTATUSEMPLEADO e LEFT JOIN NOTIFICACION n  ON e.Codigo = n.Codigo AND n.UserN = 'admin' AND n.Estado in('N')WHERE e.AlgunCampo = ....

Resultado deseado:

╔══════════╦═════════╦═══════╦════════════╗║ Codigo   ║ Nombre  ║ Leida ║ OtroCampo  ║╠══════════╬═════════╬═══════╬════════════╣║ 2        ║ José║ N     ║ NULL       ║║ 3        ║ Maria   ║ N     ║ NULL       ║║ 4        ║ Joel    ║ N     ║ Dato1      ║║ 5        ║ Ramón   ║ N     ║ NULL       ║║ 6        ║ Teresa  ║ N     ║ Dato3      ║╚══════════╩═════════╩═══════╩════════════╝

Con este select me esta mostrando todos los datos de la tabla ESTATUSEMPLEADO el filtro del UserN funciona correctamente, cuando también quiero filtrar por el Estado no filtra los datos correctamente, debe excluirme el Codigo = 1 ya que estoy filtrando que el Estado = 'N' en cambio me lo está mostrando en el resultado y me muestra el campo Leida = 'N'.

  • No estoy usando WHERE para filtrar la tabla NOTIFICACION debido a que esta tabla puede o no contener registros, y si lo realizo en el Where, solo me mostrará los datos que se encuentren en esta tabla.

  • WHERE e.AlgunCampo = .... (Esto es porque también tengo algunas condiciones pero pertenecientes a la tabla ESTATUSEMPLEADO)

  • Utilizo n.Estado in('N') ya que hay momentos en que tengo que filtar los S y N.

Deseo obtener todos los datos de la tabla ESTATUSEMPLEADO y hacer la unión izquierda con la tabla NOTIFICACION, para filtrar los datos y que solo me muestre los datos que cumplan con las condiciones especificadas.

Entorno: SQL Server 2008 R2

Si mi pregunta no es del todo clara, por favor plantear las dudas en los comentarios. Gracias.


Viewing all articles
Browse latest Browse all 3

Latest Images

Pangarap Quotes

Pangarap Quotes

Vimeo 10.7.0 by Vimeo.com, Inc.

Vimeo 10.7.0 by Vimeo.com, Inc.

HANGAD

HANGAD

MAKAKAALAM

MAKAKAALAM

Doodle Jump 3.11.30 by Lima Sky LLC

Doodle Jump 3.11.30 by Lima Sky LLC

Trending Articles


Imágenes de Robin Hood para colorear


Dino Rey para colorear


Libros para colorear


Mandalas de flores para colorear


Dibujos para colorear de perros


Toro para colorear


People Walk Away Quotes, Inspire Quotes


Inspirational Tagalog quotes and Motivational English Quotes


Love Quotes Tagalog


RE: Mutton Pies (mely)


Pokemon para colorear


Winx Club para colorear


Girasoles para colorear


Sapos para colorear


Renos para colorear


Dromedario para colorear


Selos Quotes – Tagalog Love Quotes


Long Distance Relationship Tagalog Love Quotes


Tamis Ng tagumpay


Mga Tala sa “Unang Siglo ng Nobela sa Filipinas” (2009) ni Virgilio S. Almario





Latest Images

Pangarap Quotes

Pangarap Quotes

Vimeo 10.7.0 by Vimeo.com, Inc.

Vimeo 10.7.0 by Vimeo.com, Inc.

HANGAD

HANGAD

MAKAKAALAM

MAKAKAALAM

Doodle Jump 3.11.30 by Lima Sky LLC

Doodle Jump 3.11.30 by Lima Sky LLC