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

Consulta sencilla.

Estas en el tema de Consulta sencilla. en el foro de SQL Server en Foros del Web. No se como hacer la siguiente consulta: Tengo una tabla con los siguientes campos: ID, Persona, Acción y Fecha. ¿Qué consulta SQL debo hacer para ...
  #1 (permalink)  
Antiguo 18/08/2010, 10:09
 
Fecha de Ingreso: enero-2010
Mensajes: 12
Antigüedad: 14 años, 3 meses
Puntos: 0
Consulta sencilla.

No se como hacer la siguiente consulta:

Tengo una tabla con los siguientes campos:

ID, Persona, Acción y Fecha.

¿Qué consulta SQL debo hacer para obtener lo siguiente?
Una lista con la última acción de cada persona.

Gracias por la ayuda.
  #2 (permalink)  
Antiguo 18/08/2010, 10:44
Avatar de flaviovich  
Fecha de Ingreso: agosto-2005
Ubicación: Lima, Peru
Mensajes: 2.951
Antigüedad: 18 años, 8 meses
Puntos: 39
Respuesta: Consulta sencilla.

Eso es clasico:
Código SQL:
Ver original
  1. SELECT T1.*
  2. FROM tabla T1
  3. INNER JOIN (
  4.     SELECT ID, MAX(Fecha) Fecha
  5.     FROM tabla
  6.     GROUP BY ID
  7. ) T2 ON T1.ID = T2.ID AND T1.Fecha = T2.Fecha
__________________
No repitamos temas, usemos el Motor de busquedas
Plantea bien tu problema: Ayúdanos a ayudarte.
  #3 (permalink)  
Antiguo 18/08/2010, 10:56
 
Fecha de Ingreso: enero-2010
Mensajes: 12
Antigüedad: 14 años, 3 meses
Puntos: 0
Respuesta: Consulta sencilla.

¿Qué son T1 y T2?
  #4 (permalink)  
Antiguo 18/08/2010, 10:59
Avatar de flaviovich  
Fecha de Ingreso: agosto-2005
Ubicación: Lima, Peru
Mensajes: 2.951
Antigüedad: 18 años, 8 meses
Puntos: 39
Respuesta: Consulta sencilla.

Son alias.
__________________
No repitamos temas, usemos el Motor de busquedas
Plantea bien tu problema: Ayúdanos a ayudarte.
  #5 (permalink)  
Antiguo 18/08/2010, 11:13
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 16 años, 9 meses
Puntos: 180
Respuesta: Consulta sencilla.

opsssss, creo que tenemos un problema de iniciacion....
  #6 (permalink)  
Antiguo 18/08/2010, 11:14
 
Fecha de Ingreso: enero-2010
Mensajes: 12
Antigüedad: 14 años, 3 meses
Puntos: 0
Respuesta: Consulta sencilla.

Me dice: "El motor de la base de datos Access no pudo encontrar el objeto MAX(Hora) Hora"

Doy mas datos.
Estoy con Access.

La tabla se llama Eventos.
Los campos Id (Entero) , Empleado(Entero), Acción(String), Fecha(Date).

SELECT T1.*
FROM Eventos T1
INNER JOIN (
SELECT ID, MAX(Hora) Hora
FROM Eventos
GROUP BY ID
) T2 ON T1.ID = T2.ID AND T1.Hora = T2.Hora

Y ésto no me funciona.

Gracias por la ayuda.
  #7 (permalink)  
Antiguo 18/08/2010, 11:21
Avatar de flaviovich  
Fecha de Ingreso: agosto-2005
Ubicación: Lima, Peru
Mensajes: 2.951
Antigüedad: 18 años, 8 meses
Puntos: 39
Respuesta: Consulta sencilla.

A ver, este es el foro de SQL Server. Para Access dirigete a http://www.forosdelweb.com/f21/
Prueba asi:
Código SQL:
Ver original
  1. SELECT T1.*
  2. FROM Eventos T1
  3. INNER JOIN (
  4. SELECT ID, MAX(Eventos.Hora) AS Hora
  5. FROM Eventos
  6. GROUP BY ID
  7. ) T2 ON T1.ID = T2.ID AND T1.Hora = T2.Hora
__________________
No repitamos temas, usemos el Motor de busquedas
Plantea bien tu problema: Ayúdanos a ayudarte.
  #8 (permalink)  
Antiguo 18/08/2010, 11:29
 
Fecha de Ingreso: enero-2010
Mensajes: 12
Antigüedad: 14 años, 3 meses
Puntos: 0
Respuesta: Consulta sencilla.

Gracias por la ayuda. He escrito en aquel foro.
De todos modos ese último código me sigue devolviendo todos los registros
  #9 (permalink)  
Antiguo 18/08/2010, 15:22
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 3 meses
Puntos: 447
Respuesta: Consulta sencilla.

Cita:
Iniciado por FgGallego Ver Mensaje
Gracias por la ayuda. He escrito en aquel foro.
De todos modos ese último código me sigue devolviendo todos los registros
Buenas Tardes FgGallegos, creo que el problema está en que no pones algún ejemplo de los datos que tiene tu tabla, por lo que puedo observar el campo ID es un consecutivo de tu tabla y el campo Persona es una llave foránea, si estoy en un error me lo comentas,

Prueba con esto


Código SQL:
Ver original
  1. SELECT T1.*
  2. FROM Eventos T1
  3. INNER JOIN (
  4. SELECT Eventos.Persona, MAX(Eventos.Hora) AS Hora
  5. FROM Eventos
  6. GROUP BY Persona)
  7. T2 ON T1.Persona = T2.Persona
  8. AND T1.Hora = T2.Hora

También otra recomendación, tal como lo menciona flaviovich, existe un foro dedicado a ACCESS, no es bueno andar poniendo la misma pregunta en cuanto foro te encuentres. Y una última cosa, los foros son para resolver dudas, no para hacer el trabajo escolar de otros como creo que es el caso. Lo ideal es que en vez de lanzar la pregunta como lo hiciste hubieras puesto algo de código, para ver que estabas haciendo, y así tratar de corregir lo que estuviera mal.

Espero que lo tomes en cuenta
Leo.

Etiquetas: sencilla
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 22:23.