Ayuda con la implementación de consulta sql en base de datos access con varias tablas

Hola, quisiera hacer una consulta en sql y access. Son tres tablas iguales con un nombre de usuario y una opción que ha elegido el propio usuario (valores del 1 al 5), y una cuarta tabla donde esta nombre de usuario, contraseña. (Entre otros datos más)
La información que quiero extraer es en una misma lista saber para un mismo usuario, que tablas ha elegido que contengan una misma opción, (cada usuario puede tener un solo registro o ningún registro por tabla) (por ejemplo: saber para el usuario Juan, el listado de todas las tablas que tienen la opción 3). ¿Cómo puedo hacerlo? ¿Tengo qué relacionar tablas en access?
He intentado lo siguiente: en cada una de las tres tablas iguales le incluyo un campo llamado identif con el valor de la propia tabla (identif=tabla1, ...). La consulta me falla y no entiendo porque:
SELECT tabla1.identif , tabla2.identif , tabla3.identif FROM tabla1 , tabla2 , tabla3 WHERE (tabla1.username = "Juan" AND tabla2.username = "Juan" AND tabla3.username = "Juan" AND tabla1.opcion = 2 AND tabla2.opcion = 2 AND tabla3.opcion = 2)
Gracias

2 Respuestas

Respuesta
No se si acabo de entender lo que necesitas, pero prueba con esto.
En el WHERE pon:
(tabla1.username = "Juan" AND tabla1.opcion = 2) OR (tabla2.username = "Juan" AND tabla2.opcion = 2) OR (tabla3.username = "Juan" AND tabla3.opcion = 2)
Si no te sirve, explicame que quieres decir con listar las tablas que contengan una misma opción.
Respuesta
1
Con que una única tabla no tenga el registro, la consulta no te devuelve nada.
Deberías hacer una unión de tablas, como la siguiente:
SELECT "tabla1" as nombre_tabla, tabla1.identif
FROM tabla1
where tabla1.username = "JUAN"
AND TABLA1.OPCION = 2
UNION
SELECT "tabla2" as nombre_tabla, tabla2.identif
FROM tabla2
where tabla2.username = "JUAN"
AND TABLA2.OPCION = 2
UNION
SELECT "tabla3" as nombre_tabla, tabla3.identif
FROM tabla4
where tabla3.username = "JUAN"
AND TABLA3.OPCION = 2
DE este modo, suponiendo que la tabla2 no tiene registro, la consulta nos daría:
Tabla1 - identificador1
Tabla3 - identificador3
Nos devolvería un registro por cada tabla encontrada, y no un único registro.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas