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

Esto parece dificil Ayuda!

Estas en el tema de Esto parece dificil Ayuda! en el foro de Mysql en Foros del Web. buenas nuevas a todos, esta es mi segunda pregunta en el foro, exelente por cierto, tengo la siguiente tabla: id usr fecha ingreso1 Salida1 Ingreso2 ...
  #1 (permalink)  
Antiguo 23/11/2010, 10:41
 
Fecha de Ingreso: noviembre-2010
Mensajes: 7
Antigüedad: 13 años, 4 meses
Puntos: 0
Esto parece dificil Ayuda!

buenas nuevas a todos, esta es mi segunda pregunta en el foro, exelente por cierto, tengo la siguiente tabla:

id usr fecha ingreso1 Salida1 Ingreso2 Salida2

1 001 2010-11-01 marcado marcado marcado marcado ---> resultado= 1
2 001 2010-11-02 marcado marcado --> resultado= 0.5
3 001 2010-11-03 marcado marcado ---> resultado= 0.5
4 001 2010-11-04 marcado marcado marcado ---> resultado= 0.5
5 001 2010-11-05 marcado marcado marcado ---> resultado= 0.5
6 001 2010-11-06 marcado marcado marcado marcado ---> resultado= 1

...y mas combinaciones

lo q quiero es es contar cuantos dias trabajo un usuario de acuerdo al tabla
por ejemplo si tiene los cuatro campos de Ingreso y salida marcados que cuente 1 y
si tiene solo dos capos marcados en estecaso entrada y salida obligatoriamente q me cuente solo 0.5 y
y me sume todo eso. Para mi tabla el resultado esperado seria: 4
la verdad no se como armarlo soy nuevo en sql mysql yo siempre trabaje desde codigo Lenguaje,
y se me esta siendo dificil armar mis reportes
ahun asi estoy por terminar:
comense con algo pequeño para solo dos campos, algo asi:

SELECT usr,
if(Ingreso1=Salida1 is null,'0',1) as 'dias trabajados'
From bd.asistencia group by usr;

creo q seria usar varios if dentro de un case o halgo asi no? espero me hayuden, de ante mano gracias mil.
  #2 (permalink)  
Antiguo 23/11/2010, 11:10
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 3 meses
Puntos: 447
Respuesta: Esto parece dificil Ayuda!

Buenos días beto60, creo que esto te puede servir:

Código MySQL:
Ver original
  1. #Creamos una tabla de pruebas
  2. create table `pruebas`.`TMP_EntradasSalidas` (  `id` int UNSIGNED NOT NULL AUTO_INCREMENT , `usr` varchar (10) NOT NULL , `fecha` date NOT NULL , `ingreso1` varchar (10) , `salida1` varchar (10) , `ingreso2` varchar (10) , `salida2` varchar (10) , PRIMARY KEY (`id`))  
  3.  
  4. #Insertamos valores a la tabla de pruebas
  5. insert into TMP_EntradasSalidas values (null, '001', '2010-11-01', 'marcado', 'marcado', 'marcado', 'marcado'),
  6. (null, '001', '2010-11-02', 'marcado', 'marcado', null, null),
  7. (null, '001', '2010-11-03', 'marcado', 'marcado', null, null),
  8. (null, '001', '2010-11-04', 'marcado', 'marcado', 'marcado', null),
  9. (null, '001', '2010-11-05', 'marcado', 'marcado', 'marcado', null),
  10. (null, '001', '2010-11-06', 'marcado', 'marcado', 'marcado', 'marcado'),
  11. (null, '002', '2010-11-05', 'marcado', 'marcado', 'marcado', null),
  12. (null, '002', '2010-11-06', 'marcado', 'marcado', 'marcado', 'marcado')
  13.  
  14. #Verificamos los valores de la tabla
  15. select * from TMP_EntradasSalidas
  16.  
  17. #Sumamos los días trabajados
  18.     (ingreso1 is not null and
  19.     salida1 is not null and
  20.     ingreso1 is not null and
  21.     salida2 is not null) then 1 else 0.5 end) as dias_trabajados
  22. from TMP_EntradasSalidas
  23.  
  24. #Eliminamos la tabla de pruebas
  25. drop table TMP_EntradasSalidas

El resultado de esta consulta sería el siguiente

Código:
usr|dias_trabajados
-------------------------------------------
001|4.0
002|1.5
Saludos
Leo
  #3 (permalink)  
Antiguo 23/11/2010, 11:48
 
Fecha de Ingreso: noviembre-2010
Mensajes: 7
Antigüedad: 13 años, 4 meses
Puntos: 0
Respuesta: Esto parece dificil Ayuda!

Gracias leonardo_josue, te agradesco mucho, llego a casa y lo pruebo, la verdad cuesta comensar pero ya lo estoy entendiendo esto del sql, y es realmente increible las cosa q su pueden hacer, gracias mil.
  #4 (permalink)  
Antiguo 23/11/2010, 15:20
 
Fecha de Ingreso: noviembre-2010
Mensajes: 7
Antigüedad: 13 años, 4 meses
Puntos: 0
Respuesta: Esto parece dificil Ayuda!

exelente funciona, seria perfecto si no es x un problemilla, no toma encuenta si entrada1:marcado, salida1:null. entrada2:marcado y salida2:null esto deberia ser 0 y no 0.5 seria usar un case, o se solucionaria ahi mismo?
  #5 (permalink)  
Antiguo 25/11/2010, 12:35
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 3 meses
Puntos: 447
Respuesta: Esto parece dificil Ayuda!

Cita:
Iniciado por beto60 Ver Mensaje
exelente funciona, seria perfecto si no es x un problemilla, no toma encuenta si entrada1:marcado, salida1:null. entrada2:marcado y salida2:null esto deberia ser 0 y no 0.5 seria usar un case, o se solucionaria ahi mismo?
Lo único que tienes que hacer es anidar un case cuando se asigna 0.5 para considerar esta condición. inténtalo y si tienes problemas lo comentas en el foro.

Saludos

Etiquetas: dificil
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 19:09.