2016-05-22 4 views
1

I erstellen die folgenden Tabellen:Wie fügt man die Summe zweier Tabellen in Oracle ein?

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) 
); 

I die folgenden Daten eingesetzt:

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); 

Die Frage lautet: Wie numberC + numberB in der Spalte "total" der Tabelle "AandB" einzufügen , das heißt:

0X1 = 13

0X2 = 16

0x3 = 13

Dank für irgendwelche Vorschläge oder Antworten, hat einen schönen Tag!

Antwort

1

Nun, aktualisieren Sie einfach die AandB Tabelle nach einer Verknüpfung zwischen A und B

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) 

Wenn A und B Tabelle wird nicht unbedingt alle AandB Codes enthalten, dass Sie ein hinzufügen sollten, wo Klausel zu filtern sie:

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

Vielen Dank :) – Python241820