manish-gusain8909 Ответов: 1

Как выполнить другой запрос на основе столбца, выбранного из другого подзапроса


у меня есть 3 таблицы sec_user, admin, teacher.
сначала я должен сопоставить userid и пароль ввода от sec_user, если он совпадает, то role_id будет выбран из sec_user.


если role_id составляет 1 Выберите * от админа еще если role_id составляет 2 Выберите * от учителя.

Что я уже пробовал:

ВЫБИРАТЬ
*
ОТ
(
ВЫБИРАТЬ
ДЕЛО
Когда ROLE_ID=1, то (выберите * от администратора)
Когда ROLE_ID=2, то (выберите * от учителя)
КОНЕЦ
FROM (select role_id from sec_users where USER_CODE=:PI_USER_ID and ENCRYPTED_PWD=: PI_PASSWORD) ROLE_ID
)

этот запрос работает только в том случае, если я выбираю один coulumn insteat of *

1 Ответов

Рейтинг:
1

Kornfeld Eliyahu Peter

Вы можете использовать простое соединение

select 
  ...
  case when role = 1
    then admin.name
    else teacher.name
  end as [name],
  isnull(admin.name, teacher.name) as [name]
from [security]
  left join admin on ... and role = 1
  left join teacher on ... and role = 2

Одно из соединений потерпит неудачу, а другое принесет нужные вам данные...


manish-gusain8909

идентификатор роли будет получен из другой таблицы с помощью запроса select . и на основе значения роли я хочу выбрать несколько столбцов из разных таблиц.