у меня есть 4 таблицы products, orders, order_hist и order_prod_ref.Настройка данных представлена ниже:
DROP TABLE products;
DROP TABLE orders;
DROP TABLE order_hist;
DROP TABLE ord_prd_ref;
create table products (product_id varchar2(20),FLG CHAR(1));
create table orders (order_id varchar2(20));
create table order_hist (order_id varchar2(20));
create table ord_prd_ref (product_id varchar2(20),order_id varchar2(20),prd_name varchar2(10));
INSERT INTO PRODUCTS values ('1000365007482','Y');
INSERT INTO PRODUCTS values ('1000359547456','N');
INSERT INTO PRODUCTS values ('1000359524206','N');
INSERT INTO PRODUCTS values ('1000082514435','N');
INSERT INTO PRODUCTS values ('1000088066693','N');
commit;
INSERT INTO ORDERS VALUES ('5000099148559');
INSERT INTO ORDERS VALUES ('5000099236099');
INSERT INTO ORDERS VALUES ('5000099705242');
INSERT INTO ORDERS VALUES ('5000002349523');
INSERT INTO ORDERS VALUES ('5000002349523');
INSERT INTO ORDERS VALUES ('5000099148559');
COMMIT;
INSERT INTO ord_prd_ref VALUES ('1000365007482','5000099148559','A');
INSERT INTO ord_prd_ref VALUES ('1000365007482','5000099148559','B');
INSERT INTO ord_prd_ref VALUES ('1000365007482','5000099148559','C');
INSERT INTO ord_prd_ref VALUES ('1000365007482','5000099148559','D');
INSERT INTO ord_prd_ref VALUES ('1000359547456','5000099236099','E');
INSERT INTO ord_prd_ref VALUES ('1000359547456','5000099236099','F');
INSERT INTO ord_prd_ref VALUES ('1000359547456','5000099236099','G');
INSERT INTO ord_prd_ref VALUES ('1000082514435','5000099705242','H');
INSERT INTO ord_prd_ref VALUES ('1000088066693','5000099236099','I');
INSERT INTO ord_prd_ref VALUES ('1000082514435','5000099705242','J');
INSERT INTO ord_prd_ref VALUES ('1000082514435','5000099705242','K');
COMMIT;
Я хочу вставить данные в order_hist из заказов, когда products.flg = 'Y', а также удалить эту запись из таблицы заказов.
Я попробовал этоно это не дает мне ожидаемых результатов, так как есть только один product_id с flg = 'Y', то есть 1000365007482
INSERT INTO order_hist
select * FROM orders a
WHERE
EXISTS (
SELECT
NULL
FROM
products,
ord_prd_ref,
orders
WHERE
products.product_id = ord_prd_ref.product_id
AND orders.order_id = ord_prd_ref.order_id
AND FLG = 'Y'
AND products.FLG = 'Y'
);
ожидаемый результат должен быть соответствующим порядковым номером должен быть вставлен в таблицу order_hist, то есть 5000099148559.
select order_id from ord_prd_ref where product_id = '1000365007482';
любая помощь очень ценится.
Заранее спасибо.