2016-05-22 33 views
1

我創建如下表:如何在Oracle中插入兩個表的總和?

create table AandB (
     code    varchar(9), 
     total    number, 
     CONSTRAINT pk_code PRIMARY KEY (code) 
); 

create table A (
     codeA    varchar(9), 
     numberA    number, 
     CONSTRAINT pk_codeA PRIMARY KEY (codeA) 
); 

create table B (
     codeB    varchar(9), 
     numberB   number, 
     CONSTRAINT pk_codeB PRIMARY KEY (codeB) 
); 

我插入以下DATAS:

insert into AandB(code) values('0x1'); 
insert into AandB(code) values('0x2'); 
insert into AandB(code) values('0x3'); 

insert into A(codeA, numberA) values('0x1',5); 
insert into A(codeA, numberA) values('0x2',6); 
insert into A(codeA, numberA) values('0x3',1); 

insert into B(codeB, numberB) values('0x1',8); 
insert into B(codeB, numberB) values('0x2',10); 
insert into B(codeB, numberB) values('0x3',12); 

的問題是:如何插入numberA + numberB表中的列 「總」 「AandB」的,即:

0X1 = 13

0X2 = 16

0X3 = 13

感謝您的任何建議或答案,有一個愉快的一天!

回答

1

好,根據加入AB如果A和表之間

UPDATE AandB ab 
SET ab.total = (SELECT a.numberA + b.numberB 
       FROM A 
       INNER JOIN B 
       ON(a.codeA = b.codeB) 
       WHERE a.codeA = ab.code) 

B不一定包含所有AandB代碼,你應該添加一個WHERE子句,只過濾更新AandB表他們:

UPDATE AandB ab 
SET ab.total = (SELECT a.numberA + b.numberB 
       FROM A 
       INNER JOIN B 
       ON(a.codeA = b.codeB) 
       WHERE a.codeA = ab.code) 
WHERE EXISTS(SELECT 1 FROM A 
      INNER JOIN B 
       ON(a.codeA = b.codeB) 
      WHERE a.codeA = ab.code) 
+0

非常感謝:) – Python241820

相關問題