Hacer consulta en varias tablas de access

Tengo varias tablas: usuarios, ordenadores, teléfonos, tablets y accesorios.

Todas ellas están relacionadas entre sí a través del mismo campo que se llama IdUsuario.

Es importante decir que un mismo usuario puede tener varios dispositivos asignados en una misma tabla (2 ordenadores o 2 teléfonos o 3 accesorios).

Ahora tengo una consulta para cada tabla y muestro cada resultado en un subformulario distinto.

¿Es posible ver todos los ordenadores, teléfonos, tablets y accesorios que tiene un usuario mediante una única consulta o en un mismo subformulario?

Respuesta
1

Para varias tablas se hace un consulta de UNION.

Tablas

Consulta del equipo a cargo

Observe que el usuario 1 tiene dos ordenadores a cargo. Con esta consulta adicionando el nombre se puede hacer un informe agrupado por Idusuario.

Código SQL de la consulta

Si quiere el ejemplo lo puede solicitar a [email protected] favor anotar en el asunto el nombre de la consulta.

¡Muchas gracias Eduardo! Nunca he utilizado consultas de tipo UNION así que voy a ver si me documento un poco sobre ellas. En tu ejemplo queda clárisimo que son la respuesta a mi pregunta (aunque no sé si me funciona correctamente con lo que me sale porque por el numero de ID no sé el nombre del usuario o del dispositivo, pero eso ya es otro problema diferente al planteado en mi pregunta inicial)

La consulta que hecho es esta:

SELECT Usuarios.IdUsuario, Ordenadores.IdOrdenador, Ordenadores.IdModelo, Ordenadores.Fecha_baja
FROM Usuarios INNER JOIN Ordenadores ON Usuarios.IdUsuario = Ordenadores.IdUsuario
WHERE (((Ordenadores.Fecha_baja)>Date() Or (Ordenadores.Fecha_baja) Is Null));
UNION
(SELECT Usuarios.IdUsuario, TerminalesMv.IdTerminalMv, TerminalesMv.IdModeloTerminal, TerminalesMv.FechaBaja
FROM Usuarios INNER JOIN TerminalesMv ON Usuarios.IdUsuario = TerminalesMv.IdUsuario
WHERE (((TerminalesMv.FechaBaja)>Date() Or (TerminalesMv.FechaBaja) Is Null));)
UNION
(SELECT Usuarios.IdUsuario, Dispositivos.IdDispositivo, Dispositivos.IdModeloDispositivo, Dispositivos.FechaBajaDispositivo
FROM Usuarios INNER JOIN Dispositivos ON Usuarios.IdUsuario = Dispositivos.IdUsuario
WHERE (((Dispositivos.FechaBajaDispositivo)>Date() Or (Dispositivos.FechaBajaDispositivo) Is Null)););

 he añadido un filtro para que no se muestren los accesorios que se han dado de baja

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas