Ver Mensaje Individual
  #1 (permalink)  
Antiguo 25/06/2010, 06:12
Avatar de Bravenap
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!