
Consulta agrupada de eventos de tabla
Publicado por Roberto (2 intervenciones) el 23/10/2013 09:39:40
Hola:
Tengo una pequeña pregunta o gran duda según se mire. Imaginar que tenemos una
tabla de entradas y salidas de personas de un centro de trabajo o coches de un
garaje (mi caso real es otro pero la simplificación es suficiente). Imaginar que
la tabla se denomina TablaAccesos cuya estructura y datos es tal que así:
Nombre Evento Hora
------ ------ -----
Pepe 0 9:35
Pepe 1 17:21
Juan 0 8:32
Juan 1 16:56
Tomas 0 10:00
donde el indicador Evento es igual a 0 cuando la persona entra, mientras que
Evento es igual a 1 cuando la persona abandona el edificio. Por simplicidad,
imaginar que para cada nombre sólo hay un evento de entrada y quizás uno (y
sólo uno) de salida.
Me gustaría realizar una única consulta SQL en el que se refleje cuando ha
entrado y cuando ha salido cada persona del edificio. Si no ha salido del
edificio (es decir, no hay evento de salida) quiero que el campo esté vacío, es
decir, el resultado de la consulta debería ser:
Nombre Entrada Salida
------ ------- ------
Pepe 9:3517:21
Juan 8:32 16:56
Tomas 10:00
He intentado construir la consulta de mil formas usando INNER JOIN, RIGHT JOIN,
LEFT JOIN, por ejemplo,
y el resultado siempre es el mismo: no incluye el elemento que no tiene evento
de salida, es decir:
Nombre Entrada Salida
------ ------- ------
Pepe 9:35 17:21
Juan 8:32 16:56
¿Alguien se le ocurre como se podría hacer la consulta para que incluya TODOS
los nombres?
Un saludo y gracias por adelantado
Tengo una pequeña pregunta o gran duda según se mire. Imaginar que tenemos una
tabla de entradas y salidas de personas de un centro de trabajo o coches de un
garaje (mi caso real es otro pero la simplificación es suficiente). Imaginar que
la tabla se denomina TablaAccesos cuya estructura y datos es tal que así:
Nombre Evento Hora
------ ------ -----
Pepe 0 9:35
Pepe 1 17:21
Juan 0 8:32
Juan 1 16:56
Tomas 0 10:00
donde el indicador Evento es igual a 0 cuando la persona entra, mientras que
Evento es igual a 1 cuando la persona abandona el edificio. Por simplicidad,
imaginar que para cada nombre sólo hay un evento de entrada y quizás uno (y
sólo uno) de salida.
Me gustaría realizar una única consulta SQL en el que se refleje cuando ha
entrado y cuando ha salido cada persona del edificio. Si no ha salido del
edificio (es decir, no hay evento de salida) quiero que el campo esté vacío, es
decir, el resultado de la consulta debería ser:
Nombre Entrada Salida
------ ------- ------
Pepe 9:3517:21
Juan 8:32 16:56
Tomas 10:00
He intentado construir la consulta de mil formas usando INNER JOIN, RIGHT JOIN,
LEFT JOIN, por ejemplo,
SELECT
TblEntradas.Nombre AS Nombre,
TblEntradas.Hora AS Entrada,
TblSalidas.Hora AS Salida
FROMTblEntradas.Hora AS Entrada,
TblSalidas.Hora AS Salida
TablaAccesos AS TblEntradas
RIGHT JOINTablaAccesos AS TblSalidas
ONTblEntradas.Nombre=TblSalidas.Nombre
WHERETblEntradas.Evento=0 AND TblSalidas.Evento=1
y el resultado siempre es el mismo: no incluye el elemento que no tiene evento
de salida, es decir:
Nombre Entrada Salida
------ ------- ------
Pepe 9:35 17:21
Juan 8:32 16:56
¿Alguien se le ocurre como se podría hacer la consulta para que incluya TODOS
los nombres?
Un saludo y gracias por adelantado
Valora esta pregunta


0