Как бы я выбрал из двух разных таблиц и получить следующее в Oracle - PullRequest
1 голос
/ 17 марта 2020

Мне нужно сделать следующее:

В каждом филиале найти имена менеджеров и клиентов, которыми они управляют, а также общий депозитный баланс клиентов, которыми они управляют

Моя база данных выглядит вот так

drop table branch;
CREATE TABLE branch (
BNO NUMBER(1,0),
MANAGER_NAME VARCHAR(6),
Salary NUMBER(6,0),
MGRSTARTDATE TIMESTAMP (2)
);


INSERT INTO branch VALUES
(1,'BOB',100000,'19-JUN-2001');
INSERT INTO branch VALUES
(2,'CHRIS',150000,'01-Jan-2005');
INSERT INTO branch VALUES
(3,'ANGELA',90000,'22-May-1998');
INSERT INTO branch VALUES
(4,'KIM',90000,'29-May-1996');

drop table account;
CREATE TABLE account (
ACC NUMBER(3,0),
CNAME VARCHAR(4),
BNO NUMBER(1,0),
BALANCE NUMBER(4,0)
);

INSERT INTO account VALUES
(101,'LISA',1,100);
INSERT INTO account VALUES
(102,'LISA',2,500);
INSERT INTO account VALUES
(103,'TOM',1,400);
INSERT INTO account VALUES
(104,'JOHN',3,1200);
INSERT INTO account VALUES
(105,'TOM',3,900);

Все, что у меня есть, и я не знаю, что делать дальше, это

SELECT MANAGER_NAME
FROM branch;

Я думаю, что мне нужно сделать какое-то объединение, но я не знаю как.

Ответы [ 2 ]

2 голосов
/ 17 марта 2020

Попробуйте это

select br.manager_name, acc.cname from account acc 
left join branch br 
ON acc.bno = br.bno

И ниже будет сумма баланса, которым управляющий управляет

select br.manager_name, acc.cname, sum(acc.balance) from account acc 
left join branch br 
ON acc.bno = br.bno
group by br.bno, br.manager_name
0 голосов
/ 17 марта 2020

Вы захотите использовать ВНЕШНЕЕ СОЕДИНЕНИЕ (это то же самое, что и ВЛЕВО / ВПРАВО соединение). Внешнее соединение берет все значения из одной таблицы и добавляет данные из второй таблицы, соответствующие ключу. Ключ, который вы использовали бы для сопоставления, это значение "BNO" - пример hoangnh покрывает это

Для справки, другой тип соединения - INNER JOIN, который не будет работать, так как он будет возвращать значения только с ключевые совпадения в обеих таблицах (в вашем примере выполнение внутреннего объединения исключило бы BNO = 4 из конечного результата. При выполнении внешнего объединения BNO = 4 включалось бы с нулями для значений клиента)

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