I reelaborado mi base de datos de la tabla de un usuario a múltiples tablas de usuario (divididos por función): tblStudents
, tblTeachers
, tblAdmin
Selección de varias tablas con UNION
Al entrar, yo no quiero correr tres consultas a compruebe si el usuario existe en algún lugar de mi base de datos. Así que lo que hice fue elaborado la siguiente consulta con union
select s.id as id, s.email as email, s.password as password, s.role as role from tblStudents s
union
select a.id as id, a.email as email, a.password as password, a.role as role from tblAdmin a
union
select t.id as id, t.email as email, t.password as password, t.role as role from tblTeachers t
Esto selecciona los campos que son los mismos en todas las mesas y da salida a los resultados muy bien para mí.
Entonces, decidí probar esto y por alguna razón, mi formulario de inicio de sesión no funcionaría. Para mi formulario de inicio de sesión, agregué una cláusula where
que busca la dirección de correo electrónico. Ejecuté la consulta en mi aplicación de base de datos y sorprendentemente, cuando lo hago, por ejemplo, where email = "[email protected]"
(este correo electrónico existe en mi base de datos tblAdmin
), también selecciona un registro de la tabla de mis alumnos.
Con la cláusula where:
select s.id as id, s.email as email, s.password as password, s.role as role from tblStudents s
union
select a.id as id, a.email as email, a.password as password, a.role as role from tblAdmin a
union
select t.id as id, t.email as email, t.password as password, t.role as role from tblTeachers t
where email = "[email protected]"
Los registros tanto have id = 1
pero no entiendo por qué sería seleccionar el registro del estudiante cuando estoy filtrando en la dirección de correo-e-mail. ¿Por qué es esto? ¿Alguien puede explicarme y brindarme una mejor solución a este problema? Básicamente, tengo un formulario de inicio de sesión y necesito seleccionar entre varias tablas para verificar si el usuario existe en mi db.
que no parece ser su consulta completa, ya que no hay filtrado en ella. ¿Puedes publicar toda la consulta? –
Pensé que sería claro; actualizado con la otra consulta :) – cabaret
Noté que no está poniendo la cadena entre comillas. ¿Es eso un mistype? – roberttdev