как получить запрашиваемую запись из упомянутого запроса - PullRequest
0 голосов
/ 13 мая 2019

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

Select MenuId from tblAccess where RoleId=1:2;

Должно возвращаться MenuId 2.03, 2.04 и 2.05, поскольку эти MenuId, содержащие RoleId 1 и 2

enter image description here

Пожалуйста, помогитеменя, чтобы проверить MenuId против роли

Ответы [ 2 ]

1 голос
/ 13 мая 2019

используйте условие in

Select MenuId from tblAccess where RoleId in (1,2);
0 голосов
/ 13 мая 2019

Знание вашей истории здесь (Oracle Apex) и просмотр roleid = 1:2, который выглядит как элемент челнока Apex или элемент списка выбора, который допускает множественный выбор.Если это так, то вам придется разделить эти значения, разделенные двоеточиями, на строки и использовать их, как в этом примере SQL * Plus:

SQL> var p1_roleid varchar2(10);
SQL> exec :p1_roleid := '1:2';

PL/SQL procedure successfully completed.

SQL> with tblaccess (menuid, roleid) as
  2    (select 2.03, 2 from dual union all
  3     select 2.04, 2 from dual union all
  4     select 2.05, 1 from dual union all
  5     select 2.06, 3 from dual
  6    )
  7  select menuid
  8  from tblaccess
  9  where roleid in (select regexp_substr(:P1_ROLEID, '[^:]+', 1, level)
 10                   from dual
 11                   connect by level <= regexp_count(:P1_ROLEID, ':') + 1
 12                  )
 13  order by menuid;

    MENUID
----------
      2,03
      2,04
      2,05

SQL>

В Apex это будет выглядеть как

select menuid
from tblaccess
where roleid in (select regexp_substr(:P1_ROLEID, '[^:]+', 1, level)
                 from dual
                 connect by level <= regexp_count(:P1_ROLEID, ':') + 1
                )
order by menuid;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...