В моей схеме есть следующие таблицы и значения
CREATE TABLE products
(product_id NUMBER(5) NOT NULL,
product_name VARCHAR2(10) NOT NULL,
CONSTRAINT product_pk PRIMARY KEY (product_id)
);
CREATE TABLE packages
(package_id NUMBER(5) NOT NULL,
package_name VARCHAR2(10) NOT NULL,
CONSTRAINT package_pk PRIMARY KEY (package_id)
);
CREATE TABLE product_packages
(product_id NUMBER(5) NOT NULL,
package_id NUMBER(5) NOT NULL,
CONSTRAINT product_fk FOREIGN KEY (product_id) REFERENCES products(product_id),
CONSTRAINT package_fk FOREIGN KEY (package_id) REFERENCES packages(package_id)
);
CREATE TABLE customers
(customer_id NUMBER(10) NOT NULL,
customer_name VARCHAR2(50) NOT NULL,
CONSTRAINT customer_pk PRIMARY KEY (customer_id)
);
CREATE TABLE orders
(order_id NUMBER(5) NOT NULL,
customer_id NUMBER(10) NOT NULL,
product_id NUMBER(5) NOT NULL,
quantity NUMBER(5) NOT NULL,
CONSTRAINT ord_customer_fk FOREIGN KEY (customer_id) REFERENCES customers(customer_id),
CONSTRAINT ord_product_fk FOREIGN KEY (product_id) REFERENCES products(product_id)
);
INSERT INTO products (product_id, product_name) VALUES (1, 'BARBB');
INSERT INTO products (product_id, product_name) VALUES (2, 'BARHB');
INSERT INTO products (product_id, product_name) VALUES (3, 'BARFB');
INSERT INTO packages (package_id, package_name) VALUES (1, 'BRF');
INSERT INTO packages (package_id, package_name) VALUES (2, 'LNC');
INSERT INTO packages (package_id, package_name) VALUES (3, 'DNR');
INSERT INTO product_packages (product_id, package_id) VALUES (1, 1);
INSERT INTO product_packages (product_id, package_id) VALUES (2, 1);
INSERT INTO product_packages (product_id, package_id) VALUES (2, 3);
INSERT INTO product_packages (product_id, package_id) VALUES (3, 1);
INSERT INTO product_packages (product_id, package_id) VALUES (3, 2);
INSERT INTO product_packages (product_id, package_id) VALUES (3, 3);
INSERT INTO customers (customer_id, customer_name) VALUES (1, 'John Smith');
INSERT INTO customers (customer_id, customer_name) VALUES (2, 'Adam Nash');
INSERT INTO orders (order_id, customer_id, product_id, quantity) VALUES (1, 1, 2, 1);
INSERT INTO orders (order_id, customer_id, product_id, quantity) VALUES (2, 2, 3, 2);
Я хочу добавить столбцы в таблицу ORDER с именами пакетов в таблице PACKAGES;если этот продукт содержит соответствующую упаковку, укажите значение столбца QUANTITY, иначе 0;результат должен выглядеть следующим образом:
ORDER_ID CUSTOMER_ID PRODUCT_ID QUANTITY BRF LNC DNR
-------- ----------- ---------- -------- --- --- ---
1 1 2 1 1 0 1
2 2 3 2 2 2 2
- ОБНОВЛЕНИЕ: НОВЫЙ ВОПРОС И могу ли я сделать несколько кругов на одном столе;например, я изменяю свою таблицу ORDERS на
CREATE TABLE orders
(order_id NUMBER(5) NOT NULL,
customer_id NUMBER(10) NOT NULL,
product_id NUMBER(5) NOT NULL,
adl_q NUMBER(5) NOT NULL,
kid_q NUMBER(5),
CONSTRAINT ord_customer_fk FOREIGN KEY (customer_id) REFERENCES customers(customer_id),
CONSTRAINT ord_product_fk FOREIGN KEY (product_id) REFERENCES products(product_id)
);
, и когда kid_qty не равен нулю, это означает, что будут созданы новые соответствующие имена пакетов и они также смогут выполнять разворот на них;для таблицы ORDER, такой как
INSERT INTO orders (order_id, customer_id, product_id, adl_qty, kid_qty) VALUES (1, 1, 1, 1, 1);
INSERT INTO orders (order_id, customer_id, product_id, adl_qty, kid_qty) VALUES (2, 2, 2, 2, 1);
, вы должны получить результат:
ORDER_ID CUSTOMER_ID PRODUCT_ID ADL_Q KD_Q BRF LNC DNR KDBRF KDLNC KDDNR
-------- ----------- ---------- ------ ---- --- --- --- ----- ---- ----
1 1 1 1 1 1 0 1 1 0 0
2 2 2 2 2 1 2 2 1 0 2