Ver Mensaje Individual
  #1 (permalink)  
Antiguo 08/11/2011, 19:37
neko021
 
Fecha de Ingreso: abril-2011
Mensajes: 2
Antigüedad: 13 años, 1 mes
Puntos: 0
Busqueda Busqueda en SQL Server

Hola, me estoy iniciando en el mundo del SQL y estoy practicando unos ejercicios.

Mi duda es la siguiente

Tengo que hacer un Stored Procedure (SP)que haga un Select de ciertos datos que estan contenidos en tres tablas de una base de datos, en este caso: Persoana, Direccion y Pais.

La problemática es esta: El SP recibe tres variables: Nombre, Apellido Paterno y Apellido Materno
Y debe hacer la siguiente consulta:

SELECT
A.idPersona
,A.Nombre
,A.aPaterno
,A.aMaterno
,C.Profesion
,A.RFC
,A.CorreoElectronico
,B.Direccion
,B.Colonia
,B.CP
FROM tblPersona A
INNER JOIN tblDireccion B ON A.idPersona=B.idPersona
Inner Join tblProfesion C ON A.idProfesion=C.idProfesion

La consulta trae básicamente todo lo contenido en la base de datos, que cumplan con las condiciones anteriores, pero lo que yo quiero es que aparte de eso, traiga solo los registros que cumplan con las condiciones de Nombre y apellidos, algo como lo que sigue:

CREATE PROCEDURE [dbo].[spu_SearchPersona]

@Nombre AS VARCHAR(100)
,@aPaterno AS VARCHAR (50)
,@aMaterno AS VARCHAR(50)


AS
BEGIN
SET NOCOUNT ON;
SELECT
A.idPersona
,A.Nombre
,A.aPaterno
,A.aMaterno
,C.Profesion
,A.RFC
,A.CorreoElectronico
,B.Direccion
,B.Colonia
,B.CP
FROM tblPersona A
INNER JOIN tblDireccion B ON A.idPersona=B.idPersona
Inner Join tblProfesion C ON A.idProfesion=C.idProfesion
WHERE A.Nombre like '%'+@Nombre+'%' OR
A.aPaterno like '%'+@aPaterno+'%' OR
A.aMaterno like '%'+@aMaterno+'%'

Esa búsqueda me trae todos los registros que tengan en su nombre o en apellidos lo que resivan las variables.

Pero ese no es el problema, el problema es que aunque el SP resiva 3 variables, desde la aplicación se le pueden mandar 1 o 2 o las 3 variables y debe hacer la búsqueda correspondiente con el numero de variables.

Por ejemplo:

Si yo mandará Nombre=a
aPaterno=Martinez
aMaterno=o
La búsqueda me deberá traer todos los registros que en el nombre lleven una "a", en el apellido paterno tengan "Martinez" y en el apellido materno tengan una "o".

Por otro lado si yo mandará:
aPaterno=MO
aMaterno=s
La búsqueda me deberá traer todos los registros que tengan en el apellido paterno la palabra Mo y en el apellido materno la letra "S" con cualquier nombre.



Gracias.