![](/img/trans.png)
[英]Using Oracle how do I conditionally select a column from two different tables based on two difference if statements?
[英]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.