Ver Mensaje Individual
  #1 (permalink)  
Antiguo 15/04/2009, 12:13
calinzt
 
Fecha de Ingreso: octubre-2008
Mensajes: 51
Antigüedad: 15 años, 6 meses
Puntos: 0
2 Store Procedures o usar Cursor¿?

Buenas tengo una complicacion a la hora de crear una consulta en un SP, ya que uno de los campos profesion (tabla Profesion) se obtiene a partir de otra tabla la cual me trae mas de un dato en ese campo, por ende, al devolverme los datos este encuentra un error el cual una subconsutla trae mas de un dato.

El SP es este:

CREATE PROCEDURE beneficiado_listarAtencionUsuarioFecha
@usuario char(20),
@desde datetime,
@hasta datetime

AS
SELECT
beneficiado.fecha,
beneficiado.horaIngreso,
beneficiado.rut,beneficiado.usuario,
intranet.dbo.profesion.nombre as profesionNombre,
intranet.dbo.logueo.nombre as usuarioNombre,
intranet.dbo.logueo.apellido as usuarioApellido,
intranet.dbo.contribuyente.nombre as Nombre, intranet.dbo.contribuyente.apellido as apellido,
intranet.dbo.contribuyente.telefono as telefono,
intranet.dbo.contribuyente.celularCod as celularCod,
intranet.dbo.contribuyente.celular as celular

from beneficiado
Left Outer Join intranet.dbo.contribuyente on intranet.dbo.contribuyente.rut = beneficiado.rut

Left Outer Join intranet.dbo.logueo on intranet.dbo.logueo.iid = beneficiado.usuario


Left Outer Join intranet.dbo.profesion on intranet.dbo.profesion.ID = (select profesion from beneficiadoProfesion where usuario = @usuario AND fechaIngreso >= @desde AND fechaIngreso<= @hasta ) (*aqui devuelve mas de un valor)

WHERE beneficiado.usuario = @usuario
AND beneficiado.fecha >= @desde AND beneficiado.fecha<= @hasta
ORDER BY beneficiado.fecha
GO


Y mi consulta es que es mejor a nivel de rendimiento, etc, un Cursor para traer ese dato o todos los datos(miles) o 2 SP uno sin el campo profesion y otro que solo me traiga la profesion o concatenar esas profeciones y traerlas en un solo campo.

Si tienen otra idea de como hacer la consulta los esucho.

Saludos.

Última edición por calinzt; 15/04/2009 a las 15:01 Razón: Faltaba un campo