У меня есть 2 сотрудника исходных таблиц, местоположения, которые не имеют одинакового количества записей и целевую таблицу access_history.
Я хочу случайным образом выбрать записи (несколько столбцов из каждой таблицы) и заполнить место назначения таблица с этими значениями.
Я знаю, что могу выполнить подзапрос (см. ниже), чтобы заполнить часть сотрудников таблицы access_history.
INSERT into table access_history
SELECT
from ( select employee_id,
card_num
from employees
where
last_name like '%'
order by dbms_random.value )
where rownum <= 2
У меня 2 вопроса, как я могу заполнить часть location таблицы access_history со случайными значениями.
Во-вторых, как я могу заполнить столбец access_date случайными, но значимыми значениями DATETIME? Имеет значение иерархия дат, в которой вторая дата больше первой даты на 10 минут - 5 часов, третья дата больше второй даты по тем же критериям и так далее, и так для каждой записи на случайный идентификатор employee_id.
Наконец, это ТОЛЬКО тестовые данные, и меня не беспокоят проблемы с производительностью, поскольку я знаю, что с DBMS_RANDOM есть накладные расходы. Моя цель - заключить это в оператор connect by level <= 10000, чтобы я мог сгенерировать множество тестовых данных. </p>
Заранее спасибо всем, кто ответит.
Мои данные должны выглядеть примерно так это:
SELECT * from access_history
ORDER BY employee_id, access_date
1, 'AAA1', 101, '06212020 21:02:04', 0
1, 'AAA1', 102, '06212020 21:22:54', 0
1, 'AAA1', 104, 06222020 01:13:11', 0
1, 'AAA1', 101, '06212020 05:29:22', 0
3, 'CCC3', 105, '06212020 08:42:34',0,
3 'CCC3', 102, '06212020 16:09:55', 0
3 'CCC3', 104, '06212020 22:29:53', 0
CREATE TABLE employees
(
employee_id NUMBER(6),
first_name VARCHAR2(20),
last_name VARCHAR2(25) NOT NULL,
card_num varchar2(10) NOT NULL
);
ALTER TABLE employees
ADD ( CONSTRAINT employee_id_pk
PRIMARY KEY (employee_id));
Insert into employees values (1, 'Mike', 'Jones', 'AAA1');
Insert into employees values (2, 'Jane', 'Doe', 'BBB2');
Insert into employees values (3, 'Paul', 'Smith', 'CCC3');
Insert into employees values (4, 'John', 'Henry', 'DDD4');
Create table locations(
location_id NUMBER(4),
location_name varchar2(30),
location_type char(1));
-- A=access T=Time & Attendance
ALTER TABLE locations
ADD ( CONSTRAINT lication_id_pk
PRIMARY KEY (location_id));
Insert into locations values (101, 'South Front Door 1', 'T');
Insert into locations values (102, 'South Front Door 2', 'T');
Insert into locations values (103, 'East Back Door 1', 'T');
Insert into locations values (104, 'East Back Door 2', 'T');
Insert into locations values (105,'Computer Room', 'A');
Insert into locations values (106,'1st Floor North', 'A');
Create table access_history(
employee_id NUMBER(6),
card_num varchar2(10),
location_id number(4),
access_date date,
processed NUMBER(1) default 0
);