2017-02-26 39 views
1

考慮以下關係。在一張表中插入另一個基礎條件

enter image description here

我試圖從NewRentPaymentsTenants添加新行,如果沒有Tenants的元組在複合主鍵houseidapartmentnumberNewRentPayments基地發現。

有一個在我查詢一下,你將有更好的主意

insert into Tenants(houseid, apartmentnumber, leasetenantssn, leasestartdate, leaseexpirationdate, rent, lastrentpaiddate, rentoverdue) 
(
    select n.* from NewRentPayments as n left join Tenants as t 
    on 
    t.houseid = n.houseid 
    and 
    t.apartmentnumber = n.apartmentnumber 
    where 
    t.houseid is null 
    or 
    t.apartmentnumber is null 
) as newval 
(newval.houseid, newval.apartmentnumber, newval.leasetenantssn, now(), NULL, newval.rent, newval.datepaid, 'f'); 

它是as newval給錯誤。

ERROR: syntax error at or near "as" 
LINE 12:) as newval 
     ^
********** Error ********** 

ERROR: syntax error at or near "as" 
SQL state: 42601 
Character: 345 

注:這不是在一個表從另一個表一個簡單的插入值完成here。在我的情況下,我插入一些常量/自定義值到Tenants行,同時插入NewRentPayments元組。

我正在使用Postgresql。

回答

1

您需要將值插入到select中。

試試這個:

insert into Tenants (houseid, apartmentnumber, leasetenantssn, leasestartdate, leaseexpirationdate, rent, lastrentpaiddate, rentoverdue) 
select newval.houseid, newval.apartmentnumber, newval.leasetenantssn, now(), null, newval.rent, newval.datepaid, 'f' 
from (
    select n.* 
    from NewRentPayments as n 
    left join Tenants as t on t.houseid = n.houseid 
     and t.apartmentnumber = n.apartmentnumber 
    where t.houseid is null 
     or t.apartmentnumber is null 
    ) as newval; 
相關問題