Мне нужно написать оператор выбора, который отображает orderId и адрес доставки из одной таблицы, но если адреса доставки нет, он должен отображать платежный адрес клиента. Я не уверен, как это сделать, поскольку UNION требует одинакового количества столбцов.
Это две таблицы:
CREATE TABLE CUSTOMER (
CustId number(4) NOT NULL,
CFirstName varchar2(30),
CSurname varchar2(30),
BillingAddr varchar2(30),
Gender varchar2(1),
PRIMARY KEY (CustId),
CONSTRAINT Check_CGender
CHECK (CGender IN ('M' , 'F'))
);
CREATE TABLE SHOPORDER (
OrdId number(4) NOT NULL,
DeliveryAddress varchar2(30),
CustId number(4),
SpId number(4),
PRIMARY KEY (OrdId),
CONSTRAINT FK_CustId
FOREIGN KEY (CustId) REFERENCES CUSTOMER,
CONSTRAINT FK_SpId
FOREIGN KEY (SpId) REFERENCES SALESPERSON
);
И это формулировка вопроса: используйте предложение UNION для перечисления идентификатора и адреса каждого заказа. Список должен быть в восходящей последовательности идентификаторов заказов. Если адрес доставки Shop Order равен NULL, вы должны отобразить платежный адрес клиента вместо адреса доставки.
Любая помощь будет очень признательна.
Мои текущие попытки, лол
SELECT Ordid, DeliveryAddress
FROM SHOPORDER
UNION
SELECT NULL AS CustId, BillingAddr
FROM CUSTOMER;
SELECT S.OrdId, S.DeliveryAddress
FROM SHOPORDER S
UNION
SELECT S.OrdId, C.BillingAddr
FROM CUSTOMER C
INNER JOIN SHOPORDER S
ON C.CustId = S.CustId;
SELECT S.OrdId
FROM SHOPORDER S
INNER JOIN CUSTOMER C
ON S.CustId = C.CustId;
(SELECT DeliveryAddress
FROM SHOPORDER
UNION
SELECT BillingAddr
FROM CUSTOMER );
SELECT OrdId, DeliveryAddress
FROM SHOPORDER
UNION
SELECT BillingAddr
FROM CUSTOMER;
SELECT OrdId, (SELECT DeliveryAddress
FROM SHOPORDER
UNION
SELECT BillingAddr
FROM CUSTOMER)
FROM SHOPORDER;
if(DeliveryAddress not null, DeliveryAddress, BillingAddr)
- person mangusta   schedule 12.08.2020