Проверьте, существуют ли данные в нескольких таблицах - PullRequest
0 голосов
/ 30 октября 2019

У меня есть две таблицы, содержащие учетные данные для входа в систему для пользователей.

Одна таблица содержит учетные данные для пользователей с правами администратора, а другая таблица содержит пользователей без прав администратора. Администратор и не администратор использует одну и ту же страницу входа. Когда пользователь входит в систему, мне нужно проверить, является ли пользователь администратором или не администратором, чтобы показать правильный / релевантный контент.

Я пробовал множество запросов, но не могу этого сделать.

Вот мой последний код, который я нашел в 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

Я хочу проверить, есликомбинация адреса электронной почты и пароля находится в одной из таблиц

1 Ответ

1 голос
/ 30 октября 2019

Мне нужно проверить, является ли пользователь администратором или не администратором, чтобы показать правильный / релевантный контент

Использовать 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

Замените '?' значениями, которые вы хотите проверить.

...