2016-09-07 3 views

Antwort

2

Aktualisieren: Tim Biegeleisens Antwort ist richtiger.

Sie benötigen eine Verknüpfung auf den beiden Tischen, so zu tun:

SELECT T1.id, T1.open, T1.receive+T2.receive, T1.close 
FROM T1 JOIN T2 USING (id); 

bearbeiten: Wenn Sie T1 aktualisieren möchten, können Sie es so tun können:

UPDATE T1 
SET receive=receive+coalesce((SELECT receive FROM T2 WHERE T1.id=T2.id),0); 
+0

können Sie Antwort mit update oder Abfrage einfügen, wenn möglich? –

+0

@MuhammadKashifSaeed Was meinst du? Möchten Sie die 'T1' Tabelle aktualisieren? – redneb

+0

Ja, ich möchte Update T1 –

2
SELECT T1.name, 
     T1.open, 
     T1.receive + COALESCE(T2.receive, 0) AS receive, 
     T1.close - COALESCE(T2.receive, 0) AS close 
FROM T1 
LEFT JOIN T2 
    ON T1.Id = T2.Id 

Wenn Sie die erste Tabelle UPDATE möchten, können Sie versuchen:

UPDATE T1 
SET T1.recieve = T1.recieve + 
    (SELECT COALESCE(T2.recieve, 0) FROM T2 WHERE T2.Id = T1.Id), 
    T1.close = T1.close - 
    (SELECT COALESCE(T2.recieve, 0) FROM T2 WHERE T2.Id = T1.Id) 
+0

Danke, Sie aktualisieren auch die enge Spalte nach meinen Erwartungen. –

1

Wenn Sie nur per id eine Zeile haben, dann können Sie tun:

select t1.id, t1.name, t1.open, (t1.receive + t2.receive), t1.close 
from t1 join 
    t2 
    on t1.id = t2.id; 

konnte ich spekulieren, dass t2 tatsächlich mehrere Zeilen für eine bestimmte ID oder fehlende Zeilen. Dies würde vorschlagen:

select t1.id, t1.name, t1.open, (t1.receive + t2.receive), t1.close 
from t1 left join 
    (select t2.id, sum(t2.receive) as receive 
     from t2 
     group by t2.id 
    ) t2 
    on t1.id = t2.id;