Как написать Oracle представление с этим запросом? - PullRequest
0 голосов
/ 06 февраля 2020

Я использую oracle 11г. Я хочу запросить 3 запроса.

Первый - основной. Выберите, чтобы найти условие.

  Select role, name from tablerole where name is not null and ID=@param1;

Этот запрос вернет @role с 2 уровнями (администратор и пользователь)

2 других подзапроса будут основаны на этом условии.

Вверх по первому запросу.

 If role='admin' then select*from tablescreen where name is not null and ID=@param1;

 If role='user' then select*from tablescreen where name='2'; 

 @param1 is given when I call this view or when I using.

Я считаю, что для этого запроса лучше всего подойдет представление, функция или процедура.

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

Спасибо за вашу доброту.

Nam hmoob.

1 Ответ

1 голос
/ 06 февраля 2020

Насколько я понял вопрос, это будет представление, которое состоит из двух select утверждений:

  • одного, которое использует условие для admin
  • другого для user

Первый отправленный вами запрос будет использован в join с таблицей tablescreen. Примерно так:

create or replace view v_role as
-- select for ADMIN
select r.id, s.whatever
  from tablescreen s join tablerole r on r.id = s.id
  where s.name is not null
    and r.role = 'admin'
union all
-- select for USER
select r.id, s.whatever
  from tablescreen s join tablerole r on r.id = s.id
  where s.name = '2'
    and r.name = 'user';

Или, как предложил Зинон, без объединения:

select r.id, s.whatever
  from tablescreen s join tablerole r on r.id = s.id
  where (    s.name is not null
         and r.role = 'admin'
        )
     or (    s.name = '2'
         and r.name = 'user'
        );

Затем вы использовали бы его как

select * from v_role v where v.id = &param1;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...