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

OUTER JOIN con nulos en la tabla izquierda

Estas en el tema de OUTER JOIN con nulos en la tabla izquierda en el foro de Bases de Datos General en Foros del Web. Buenas. Si ejecuto el procedimiento almacenado con los parámetros por defecto me debería devolver todos los registros de la tabla socios aunque el campo IDProvincia ...
  #1 (permalink)  
Antiguo 25/06/2010, 06:12
Avatar de Bravenap  
Fecha de Ingreso: noviembre-2002
Ubicación: Los Arroyos, El Escorial, Madrid
Mensajes: 2.084
Antigüedad: 22 años
Puntos: 4
OUTER JOIN con nulos en la tabla izquierda

Buenas. Si ejecuto el procedimiento almacenado con los parámetros por defecto me debería devolver todos los registros de la tabla socios aunque el campo IDProvincia sea nulo. Sin embargo sólo me devuelve los registros en los que el campo IDProvincia no es nulo .

Código SQL:
Ver original
  1. CREATE PROCEDURE [PA_Socios]
  2. (
  3.     @numSocio INT = 0,
  4.     @apellido VARCHAR(50) = '',
  5.     @provincia CHAR(2) = ''
  6. )
  7. AS
  8. BEGIN
  9.     SELECT
  10.         s.numero_socio AS NumSocio,
  11.         s.nombre_socio AS Nombre,
  12.         s.apellido1_socio AS Apellido1,
  13.         s.apellido2_socio AS Apellido2,
  14.         p.Provincia
  15.     FROM socios AS s
  16.     LEFT JOIN provincias AS p ON s.IDProvincia = p.CP
  17.     WHERE
  18.         s.numero_socio = CASE WHEN @numSocio = 0 THEN c.numero_socio ELSE @numSocio END
  19.         AND
  20.         (s.apellido1_socioLIKE '%'+@apellido+'%' OR s.apellido2_socio LIKE '%'+@apellido+'%')
  21.         AND
  22.         (s.IDProvincia = CASE WHEN @provincia = '' THEN s.IDProvincia ELSE @provincia END)
  23.     ORDER BY s.apellido1_socio, s.apellido2_socio, s.nombre_socio
  24. END
  25.  
  26. GO
  27.  
  28. EXEC PA_Socios
Gracias y un saludo.
__________________
¡¡NO A LA GUERRA!!
Si ponemos a nuestros mensajes títulos adecuados, la gente se animará más a abrirlos y resultarán más útiles en las busquedas. ¡No a los ayuuudaaa, urgenteee y similares!
  #2 (permalink)  
Antiguo 25/06/2010, 10:03
Avatar de vrenzo  
Fecha de Ingreso: febrero-2007
Mensajes: 289
Antigüedad: 17 años, 9 meses
Puntos: 15
Respuesta: OUTER JOIN con nulos en la tabla izquierda

Hola.. si el sentencia de la fila 22 pones esto... que tal...

Código SQL:
Ver original
  1. (isnull(s.IDProvincia,'') = CASE WHEN @provincia = '' THEN s......

Es lo que necesitas....

Saludos.
__________________
***
Saludos.

Última edición por vrenzo; 25/06/2010 a las 10:04 Razón: :P
  #3 (permalink)  
Antiguo 27/06/2010, 23:54
Avatar de Bravenap  
Fecha de Ingreso: noviembre-2002
Ubicación: Los Arroyos, El Escorial, Madrid
Mensajes: 2.084
Antigüedad: 22 años
Puntos: 4
Respuesta: OUTER JOIN con nulos en la tabla izquierda

Gracias por tu respuesta vrenzo, pero no lo consigo. Los registros en los que IDProvincia es nulo se omiten. He probado estas dos maneras:
Código SQL:
Ver original
  1. (ISNULL(s.IDProvincia, '')) = CASE WHEN @provincia = '' THEN s.IDProvincia ELSE @provincia END
Código SQL:
Ver original
  1. (ISNULL(s.IDProvincia, '')) = CASE WHEN @provincia = '' THEN (ISNULL(s.IDProvincia, '')) ELSE @provincia END
__________________
¡¡NO A LA GUERRA!!
Si ponemos a nuestros mensajes títulos adecuados, la gente se animará más a abrirlos y resultarán más útiles en las busquedas. ¡No a los ayuuudaaa, urgenteee y similares!

Etiquetas: izquierda, join, nulos, outer, tablas
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 18:40.