SQL - Consulta sql con mas de 3 variables

 
Vista:

Consulta sql con mas de 3 variables

Publicado por jose luis barcenas (2 intervenciones) el 25/06/2017 21:21:14
hola buenas tardes soy nuevo en el foro

tengo una tabla : asistencia1

con las siguentes columnas : fechahora, usuario, fecha, dia

datos:
07:05:25 , fernando , 2017/06/25, domingo
06:15:21, fernando, 2017/06/24, sabado
06:21:02, fernando, 2017/06/23, viernes
06:20.08, fernando, 2017/06/22, jueves
06:19:56. fernando, 2017/06/21, miercoles

y quiero generar la cuenta de retardos que se tiene tomando en cuenta que el domingo la entrada es una hora mas tarde, realice lo siguente pero no se como hacer que el domingo lo tome como retardo despues de las 7;20

set rstretardos = crearecordset("select count(fechahora) as hora from asistencia1 where fechahora >='06:20:00' and nombre ='fernando'", Ambiente.Connection)

resultado es 3 cuando deberia ser 2

en espera de su ayuda y respuesta gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 806
Bronce
Ha mantenido su posición en SQL (en relación al último mes)
Gráfica de SQL

Consulta sql con mas de 3 variables

Publicado por leonardo_josue (1173 intervenciones) el 26/06/2017 17:26:12
Hola José Luis:

Tú puedes especificar en el WHERE tantas condiciones como necesites, utilizando los operadores lógicos AND, OR y NOT... a esto se le llama ÁLGEBRA RELACIONAL... si no tienes experiencia en esto, te sugiero que le preguntes a SAN GOOGLE, él seguramente te puede ayudar.

Volviendo a tu problema, según el planteamiento entonces tienes dos condiciones para que un registro sea considerado como un retardo:

1. Que el día sea lunes, martes, miércoles, jueves, viernes o sábado (o lo que es lo mismo que el día sea distinto de domingo) Y que la hora de registro sea después de las 6:20

2. Que el día sea domingo y la fecha de registro sea después de las 7:20.

por lo tanto, en tu WHERE debes mostrar AMBAS CONDICIONES, cuando se cumpla UNA y OTRA entonces hablamos de un retardo...

la consulta quedaría entonces más o menos así:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
mysql> SELECT * FROM tabla;
+----------+----------+------------+-----------+
| hora     | nombre   | fecha      | dia       |
+----------+----------+------------+-----------+
| 07:05:25 | fernando | 2017-06-25 | domingo   |
| 06:15:21 | fernando | 2017-06-24 | sabado    |
| 06:21:02 | fernando | 2017-06-23 | viernes   |
| 06:20:00 | fernando | 2017-06-22 | jueves    |
| 06:19:56 | fernando | 2017-06-21 | miercoles |
+----------+----------+------------+-----------+
5 rows in set (0.01 sec)
 
mysql> SELECT
    ->   *
    -> FROM tabla
    -> WHERE
    ->   (
    ->     (dia != 'domingo' AND hora >='06:20:00')
    ->     OR
    ->     (dia = 'domingo' AND hora >='07:20:00')
    ->   )
    ->   AND nombre ='fernando';
+----------+----------+------------+---------+
| hora     | nombre   | fecha      | dia     |
+----------+----------+------------+---------+
| 06:21:02 | fernando | 2017-06-23 | viernes |
| 06:20:00 | fernando | 2017-06-22 | jueves  |
+----------+----------+------------+---------+
2 rows in set (0.00 sec)

hay que tener cuidado con los paréntesis, el porqué, te lo dejo de tarea.

haz la prueba y nos comentas.

Saludos
Leo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Consulta sql con mas de 3 variables

Publicado por jose luis barcenas (2 intervenciones) el 26/06/2017 18:20:02
Buenos dias Leonardo, muchas gracias por la respuesta funciona a la perfeccion un placer espero poder aprender mas y compartir en estos foros y seguire tu consejo

saludos mil gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar