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

Ayuda con stored procedure

Estas en el tema de Ayuda con stored procedure en el foro de SQL Server en Foros del Web. Hola, Tengo un problema, no se como realizar un sp con el siguiente select, las claves de empleado tienen que estar establecidas dentro del sp. ...
  #1 (permalink)  
Antiguo 11/02/2007, 21:46
 
Fecha de Ingreso: enero-2007
Mensajes: 25
Antigüedad: 17 años, 3 meses
Puntos: 0
Exclamación Ayuda con stored procedure

Hola,

Tengo un problema, no se como realizar un sp con el siguiente select, las claves de empleado tienen que estar establecidas dentro del sp.

select id_emp, rtrim(nombre)+' '+rtrim(ape_pat)+' '+ rtrim(ape_mate) as Nombres, min (convert(char(15),entrada,108)as Entradas,convert(char(10),dia,103)as Dia
from asistenciaempleados
left join empleado on id_emp=empleado
where dia between '2006-12-22' and '2006-12-25'
and id_empleado in(1550,
1320,
1323,
600,
1235,
1453,
746
)
group by dia,id_emp,nombre, ape_pat, ape_mat
order by id_emp, dia

Espero puedan ayudar gracias por su ayuda.
Saludos
  #2 (permalink)  
Antiguo 12/02/2007, 08:26
Avatar de Andres95
Colaborador
 
Fecha de Ingreso: diciembre-2004
Mensajes: 1.802
Antigüedad: 19 años, 4 meses
Puntos: 38
Re: Ayuda con stored procedure

y cual es el problema???

solo como comentario:
creo que el left join esta mal aplicado, ya que con estarias diciendo que pueden asistir empleados que no existen.
Es decir, hay registro de asistencia de empleados que no estan registrados en el catalogo de empleados.....

por otro lado, lo de los ids los puedes almacenar en una tabla separada y realizar un join con las tablas que ya tienes o bien recibirlo como parametro y almacenarlo en una tabla temporal para hacer el join.... o bien si hay alguna manera de identificar esos ids en el catalogo de empleados se puede introducir una condición where...
Cual opcion te parece mas viable en tu caso??

saludos
__________________
La sencillez y naturalidad son el supremo y último fin de la cultura...
--
MCTS : SQL Server 2008, .NET Framework 3.5, ASP.NET Applications.
  #3 (permalink)  
Antiguo 12/02/2007, 09:35
 
Fecha de Ingreso: enero-2007
Mensajes: 25
Antigüedad: 17 años, 3 meses
Puntos: 0
Re: Ayuda con stored procedure

Hola Andrés,
Entiendo lo que dices y sí puede ser que haya establecido mal el left, pero la cuestión noera esa.
Estoy tratando de hacer un stored procedure con ese select pero se me ha dificultado un poco, ya que tiene que aparecer como resultado en el stored el id empleado que yo declare en el stored, el nombre del empleado, la hora de entrada, y el día de esa entrada.

Es decir que por me dio de un rango de fecha me devuelva el id del empleado, el nombre del empleado, la hora que entró y el día que asistió.

Espero y me haya explicado, gracias

Última edición por slilitt; 12/02/2007 a las 09:37 Razón: error al teclear
  #4 (permalink)  
Antiguo 12/02/2007, 09:39
Avatar de Andres95
Colaborador
 
Fecha de Ingreso: diciembre-2004
Mensajes: 1.802
Antigüedad: 19 años, 4 meses
Puntos: 38
Re: Ayuda con stored procedure

ok, entonces cual es el problema...
o que es lo que no te despliega???
__________________
La sencillez y naturalidad son el supremo y último fin de la cultura...
--
MCTS : SQL Server 2008, .NET Framework 3.5, ASP.NET Applications.
  #5 (permalink)  
Antiguo 12/02/2007, 09:58
 
Fecha de Ingreso: enero-2007
Mensajes: 25
Antigüedad: 17 años, 3 meses
Puntos: 0
Pregunta Re: Ayuda con stored procedure

Hola el problema es que no me queda un stored con ese query, lo empiezo de la siguiente forma:

Create procedure asistencia
@idempleado char(4),
@fechaI char(15),
@fechaf char(15)

El problema me surge cuando empiezo en el select porque no se si tengo que declarar parametros para el nombre o como le puedo hacer, además que necesito que los id empleados queden establecidos en el stored proc.

select id_emp, rtrim(nombre)+' '+rtrim(ape_pat)+' '+ rtrim(ape_mate),
min (convert(char(15),entrada,108)as Entradas,convert(char(10),dia,103)as Dia
from asistenciaempleados
left join empleado on id_emp=empleado
where dia between '2006-12-22' and '2006-12-25'
and id_empleado in(1550,
1320,
1323,
600,
1235,
1453,
746
)
group by dia,id_emp,nombre, ape_pat, ape_mat
order by id_emp, dia

Saludos
  #6 (permalink)  
Antiguo 12/02/2007, 10:14
Avatar de Andres95
Colaborador
 
Fecha de Ingreso: diciembre-2004
Mensajes: 1.802
Antigüedad: 19 años, 4 meses
Puntos: 38
Re: Ayuda con stored procedure

pero que problema??
no te deja crearlo???
te marca error de sintaxis???
no te despliega lo que tu quieres??? si es asi , que valor trunca u omite???

por lo de los ids, te comentaba las opciones... cual se adecua mas a tu caso??
__________________
La sencillez y naturalidad son el supremo y último fin de la cultura...
--
MCTS : SQL Server 2008, .NET Framework 3.5, ASP.NET Applications.
  #7 (permalink)  
Antiguo 12/02/2007, 10:33
 
Fecha de Ingreso: enero-2007
Mensajes: 25
Antigüedad: 17 años, 3 meses
Puntos: 0
Re: Ayuda con stored procedure

El problema es que no se como hacerle para establecer los parámetros en el select que mencione anteriormente o por donde tengo que empezar para realizar mi stored
  #8 (permalink)  
Antiguo 12/02/2007, 12:23
Avatar de Andres95
Colaborador
 
Fecha de Ingreso: diciembre-2004
Mensajes: 1.802
Antigüedad: 19 años, 4 meses
Puntos: 38
Re: Ayuda con stored procedure

Espero te sirva el siguiente codigo, faltaria revizar que los campos
de id correspondan con tus tablas...



Código:
Create procedure dbo.spAsistencia(
       @IdList     varchar(8000)
      ,@FechaI     datetime
      ,@FechaF     datetime
AS
Declare @tmpTable Table (IdEmpleado Int) 

------------------------------------------------------------------
-- Insertar los ids recibidos como parámetro en tabla temporal
------------------------------------------------------------------
While PatIndex('%,%',@IdList) > 0
Begin
	Insert into @tmpTable(IdEmpleado) 
	Select Isnull(LEFT(@IdList,PATINDEX('%,%',@IdList)-1),0)

	Select @IdList = RIGHT(@IdList,LEN(@IdList)-PATINDEX('%,%',@IdList))
End

Insert into @tmpTable(IdEmpleado)
Select IsNull(@IdList,0)

------------------------------------------------------------------
-- Realizar consulta con los Ids enviados como parametros
------------------------------------------------------------------
Select   E.id_empleado
        ,rtrim(E.nombre) + ' ' + rtrim(E.ape_pat) + ' ' + rtrim(E.ape_mate) [Nombre]
        ,min (convert(char(15),A.entrada,108))                              [Entradas]
        ,convert(char(10),A.dia,103)                                        [Dia]
From  @tmpTable T
Inner join
      empleado E (nolock)
On    T.IdEmpleado = E.id_empleado 
Left outer join
      AsistenciaEmpleados  A (nolock) 
On    E.id_empleado = A.Empleado               
      dia between @FechaI and @FechaF

GO



-- Para ejecutar el Procedimiento desde Query Analizer - Para probar
Execute dbo.spAsistencia  '1550,1320,1323,600,1235,1453,746', '20061222', '20061225'
__________________
La sencillez y naturalidad son el supremo y último fin de la cultura...
--
MCTS : SQL Server 2008, .NET Framework 3.5, ASP.NET Applications.
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 10:16.