Запрос в oracle для получения нескольких записей из одной таблицы и ввода в другую - PullRequest
0 голосов
/ 23 февраля 2020

Мое требование - написать запрос в oracle
", который извлекает идентификаторы пользователей из таблицы пользователей и вставляет их в таблицу USERQueries"

USERS

USERID GPID GROUP
1682   1026   IBMSDL2S
1882   1028   IBMSDL2S
1573   1029   IBMSDL2S
1342   1124   IBMSDL2S
1976   2576   IBMSDL2S
1883   2575   IBMSDL2S
1854   2574   IBMSDL2S
2222   2573   IBMSDL2S
2207   2572   IBMSDL2S  

USERQueries

APP  CLAUSENAME           USERID DEFAULTQUERYID OWNER
SR   Assgined_SRs_To_Me   1249   545            MAXADMIN
SR   Assgined_SRs_To_Me   1682   543            MAXADMIN

Я могу вставить один идентификатор пользователя, как показано ниже

insert into  USERSQUERIES  
(APP,CLAUSENAME,USERID,DEFAULTQUERYID,OWNER)   
values   
('SR','Assgined_SRs_To_Me',(select userid from USERS where  groupname='IBMSDL2S' and userid='1249
),DEFAULTQUERYSEQ.NEXTVAL,'MAXADMIN')

, но не понимаю, как он будет работать для всех идентификаторов пользователей

1 Ответ

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

Вы бы написали оператор SELECT, который выбирает интересующие вас данные, а затем использовали его в операторе INSERT. Взгляните на следующий пример:

Сначала тестовый пример:

SQL> create table users as
  2  select 1682 userid, 1026 gpid, 'IBMSDL25' groupname from dual union all
  3  select 1882 userid, 1028 gpid, 'IBMSDL25' groupname from dual union all
  4  select 2222 userid, 2222 gpid, 'XXXXXX25' groupname from dual;            --> will NOT be inserted

Table created.

SQL> create table usersqueries (app varchar2(2),
  2  clausename varchar2(20), userid number, defaultqueryid number, owner
  3  varchar2(20));

Table created.

SQL> create sequence defaultqueryseq;

Sequence created.

SQL>

Тестирование: начиная со строки № 3 является оператор SELECT, о котором я упоминал ранее.

SQL> insert into usersqueries
  2    (app, clausename, userid, defaultqueryid, owner)
  3    select 'SR',
  4           'Assigned_SRs_to_me',
  5           u.userid,
  6           defaultqueryseq.nextval,
  7           'MAXADMIN'
  8    from users u
  9    where u.groupname = 'IBMSDL25';

2 rows created.

SQL> select * From usersqueries;

AP CLAUSENAME               USERID DEFAULTQUERYID OWNER
-- -------------------- ---------- -------------- --------------------
SR Assigned_SRs_to_me         1682              1 MAXADMIN
SR Assigned_SRs_to_me         1882              2 MAXADMIN

SQL>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...