我有两个表,其中包含用户的登录凭据。
一个表包含管理员用户的凭据,另一个表包含非管理员用户。管理员和非管理员用户使用相同的登录页面。用户登录时,我需要检查该用户是管理员用户还是非管理员用户,以显示正确/相关的内容。
我尝试了许多查询,但无法这样做。
这是我在STackoverflow上找到的最新代码,但未显示任何语法错误结果:
SELECT TOP 1 from
(
SELECT aes_decrypt(NonAdminEmail, 'SALT') as email from NonAdminUsers WHERE aes_decrypt(NonAdminEmail, 'SALT') = 'email@domain'
UNION ALL
SELECT aes_decrypt(Admin_Email, 'SALT') as email from AdminUsers WHERE aes_decrypt(Admin_Email, 'SALT') = 'demail@domain'
) a
我也尝试过:
SELECT aes_decrypt(NonAdminEmail, 'SALT') as User, password
FROM NonAdminUsers
WHERE aes_decrypt(NonAdminEmail, 'SALT') ='$username' AND password='$password'
UNION
SELECT aes_decrypt(Admin_Email, 'SALT') as User, password
FROM AdminUsers
WHERE username='email@domain.com' AND password='$password
编辑:
表的轮廓如下:
NonAdmin
NonAdmin_ID Password NonAdminEmail
001 pass3 email1@domain.com
001 pass5 email2@domain.com
003 pass2 email3@domain.com
AdminUsers
AdminUserID Pass AdminEmail
A001 Apass1 adminemail1@domain
A002 Apass2 adminemail2@domain
A003 Apass3 adminemail3@domain
我要检查电子邮件和密码组合是否在两个表中
答案 0 :(得分:1)
我需要检查用户是管理员用户还是非管理员用户才能显示 正确/相关内容
使用EXISTS
:
select
case
when exists (
select 1 from AdminUsers
where aes_decrypt(AdminEmail, 'SALT') = '?' and Pass = '?'
) then 'Admin'
when exists (
select 1 from NonAdmin
where aes_decrypt(NonAdminEmail, 'SALT') = '?' and Password = '?'
) then 'Non Admin'
else 'Unknown'
end result
用您要检查的值替换'?'
。