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

sql para registros anteriores

Estas en el tema de sql para registros anteriores en el foro de Bases de Datos General en Foros del Web. Hola. A ver si puede alguien ayudarme, me he bloqueado totalmente. Tengo una table que contiene más o menos esto: ID - CHOFER - HORA ...
  #1 (permalink)  
Antiguo 20/11/2010, 17:44
 
Fecha de Ingreso: noviembre-2010
Mensajes: 7
Antigüedad: 13 años, 5 meses
Puntos: 0
sql para registros anteriores

Hola.

A ver si puede alguien ayudarme, me he bloqueado totalmente.

Tengo una table que contiene más o menos esto:

ID - CHOFER - HORA
--------------------------
1 - 2 - 19/11/2010 7:24
2 - 1 - 19/11/2010 7:25
3 - 2 - 19/11/2010 12:31
4 - 3 - 19/11/2010 12:35
5 - 1 - 19/11/2010 14:14
6 - 2 - 19/11/2010 15:02
7 - 3 - 19/11/2010 17:45
8 - 2 - 19/11/2010 19:55
9 - 2 - 20/11/2010 7:13
10 - 2 - 20/11/2010 9:25
...

¿Puedo, mediante sql, generar una consulta que me resulte algo así?:

FECHA - CHOFER - TIEMPO
---------------------------------
19/11/2010 - 1 - 06:49
19/11/2010 - 2 - 08:00
19/11/2010 - 3 - 05:10
20/11/2010 - 2 - 02:12

Gracias de antemano por su colaboración.
  #2 (permalink)  
Antiguo 21/11/2010, 21:04
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 2 meses
Puntos: 360
Respuesta: sql para registros anteriores

y ese tiempo como lo quieres sacar?
suma? resta?
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #3 (permalink)  
Antiguo 22/11/2010, 03:58
 
Fecha de Ingreso: noviembre-2010
Mensajes: 7
Antigüedad: 13 años, 5 meses
Puntos: 0
Respuesta: sql para registros anteriores

Los tiempos que quiero obtener (me da igual el formato) son la diferencia entre entradas y salidas. En un mismo día pueden producirse 1, varias o ninguna salida/entrada.

El caso es que no consigo ver como hacer para que, de los registros de un CHOFER de x fecha, me haga esa diferencia de tiempo entre la primera entrada y la primera salida, 2ª entrada y 2ª salida.....
  #4 (permalink)  
Antiguo 22/11/2010, 06:49
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: sql para registros anteriores

Código SQL:
Ver original
  1. SELECT CHOFER, T1.FECHA, T2.FECHA
  2. FROM tabla T1 INNER JOIN tabla T2 ON T1.CHOFER=T2.CHOFER AND DATE(T1,FECHA) = DATE(T2.FECHA)
  3. WHERE T1.FECHA < T2.FECHA
Algo así te debería devolver una tabla donde aparece entrada y salida del chofer si y sólo si el mismo chofer sólo tiene dos apariciones por día en esa tabla.
La diferencial de tiempo se calcula con alguna fución de fecha y hora, pero como estas depende de qué DBMS estés usando (y eso no lo indicas) no te lo puedo poner.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #5 (permalink)  
Antiguo 22/11/2010, 07:09
 
Fecha de Ingreso: noviembre-2010
Mensajes: 7
Antigüedad: 13 años, 5 meses
Puntos: 0
Respuesta: sql para registros anteriores

Perdón, fallo mío, la bd es de access, 07 concretamente.

La diferencia de tiempo, si consigo agrupar entrada (en un registro) con salida correspondiente (que está en otro registro) en una consulta o tabla no me es problema.

El tema está en "juntarlos".

Probando tu sql, me indica siempre que: Se utilizó un número incorrecto de argumentos con la función en la expresión de consulta ".

He cambiado una coma que creo que sobraba en tu código por un punto, pero no es eso....
  #6 (permalink)  
Antiguo 22/11/2010, 07:28
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: sql para registros anteriores

No. El problema es que Access no es realmente un DBMS. Es apenas un manejador de tablas con intérprete de SQL incrustado, pero las capacidades de SQL que tienen son limitadas.

El verdadero DBMS de Microsoft es SQL Server, no Access.

Infortunadamente deberás esperar a que alguien con más práctica en Acces te responda.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #7 (permalink)  
Antiguo 22/11/2010, 10:13
 
Fecha de Ingreso: noviembre-2010
Mensajes: 7
Antigüedad: 13 años, 5 meses
Puntos: 0
Respuesta: sql para registros anteriores

Cita:
Iniciado por gnzsoloyo Ver Mensaje
Código SQL:
Ver original
  1. SELECT CHOFER, T1.FECHA, T2.FECHA
  2. FROM tabla T1 INNER JOIN tabla T2 ON T1.CHOFER=T2.CHOFER AND DATE(T1,FECHA) = DATE(T2.FECHA)
  3. WHERE T1.FECHA < T2.FECHA
Algo así te debería devolver una tabla donde aparece entrada y salida del chofer si y sólo si el mismo chofer sólo tiene dos apariciones por día en esa tabla.
La diferencial de tiempo se calcula con alguna fución de fecha y hora, pero como estas depende de qué DBMS estés usando (y eso no lo indicas) no te lo puedo poner.

Unos paréntesis, una coma x punto y cambiar DATE por DateValue y sale la consulta tal cual la planteaste.

Pero si, efectivamente solo serviría si cada CHOFER tan solo ha entrado y salido 1 vez por día, para más movimientos en el mismo día me deja datos erróneos.

Bueno, sigo buscando sugerencias, y sea como fuere, mil gracias por tu atención gnzsoloyo,

Etiquetas: anteriores, registros, sql
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 13:43.