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í:
Código:
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:
Código:
Nombre Entrada Salida
------ ------- ------
Pepe 9:35 17: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,
Código:
SELECT
TblEntradas.Nombre AS Nombre,
TblEntradas.Hora AS Entrada,
TblSalidas.Hora AS Salida
FROM
TablaAccesos AS TblEntradas
RIGHT JOIN
TablaAccesos AS TblSalidas
ON
TblEntradas.Nombre=TblSalidas.Nombre
WHERE
TblEntradas.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:
Código:
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