繁体   English   中英

我将如何从两个不同的表中进行选择并在 Oracle 中获得以下内容

[英]How would I select from two different tables and get the following in Oracle

我需要执行以下操作:

从每个分行,找到经理姓名和他们管理的#customers 以及他们管理的客户的总存款余额

我的数据库看起来像这样

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;

我想我需要做某种类型的加入,但不知道如何。

尝试这个

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

您将需要使用 OUTER JOIN(这与 LEFT/RIGHT 连接相同)。 外连接从一个表中获取所有值,并添加来自与键匹配的第二个表中的数据。 您用来匹配的键是“BNO”值——hoangnh 的示例涵盖了这一点

作为参考,另一种类型的连接是 INNER JOIN,它不起作用,因为它只会返回两个表中键匹配的值(在您的示例中,执行内部连接将从最终结果中排除 BNO=4。做一个外连接会将 BNO=4 包含在客户值的空值中)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM