2017-02-27 8 views
1
ここ

は、私がこれまで持っているものです。私はテーブルBタプルの主キーがタプルに存在しない場合(テーブルBからの)テーブルAにタプルを挿入しようとしている

INSERT INTO Tenants (LeaseStartDate, LeaseExpirationDate, Rent, LeaseTenantSSN, RentOverdue) 
SELECT CURRENT_DATE, NULL, NewRentPayments.Rent, NewRentPayments.LeaseTenantSSN, FALSE from NewRentPayments 
WHERE NOT EXISTS (SELECT * FROM Tenants, NewRentPayments WHERE NewRentPayments.HouseID = Tenants.HouseID AND 
NewRentPayments.ApartmentNumber = Tenants.ApartmentNumber) 

したがって、HouseIDとApartmentNumberが一緒にプライマリキーを構成します。主キーに基づいてテーブルA(テナント)に存在しないテーブルB(NewRentPayments)にタプルがある場合は、それをテナントに挿入する必要があります。

問題は、クエリを実行するときに何も挿入しないということです(実際には1タプルが挿入されるはずです)。私はそれがうまくいくように見えるので、紛失している。

ありがとうございました。

答えて

1

サブクエリには相関がありませんでした。これは単なる相関関係のない結合クエリでした。

問題の説明に従って、この結合は必要ありません。

これを試してみてください:

insert into Tenants (LeaseStartDate, LeaseExpirationDate, Rent, LeaseTenantSSN, RentOverdue) 
select current_date, null, p.Rent, p.LeaseTenantSSN, FALSE 
from NewRentPayments p 
where not exists (
     select * 
     from Tenants t 
     where p.HouseID = t.HouseID 
      and p.ApartmentNumber = t.ApartmentNumber 
     ) 
+0

ユアーズは動作しますが、正確に違いは何である(表記の一部をクリーンアップ以外にも?)ありがとう。 –

+0

サブクエリ内にNewRentPaymentsがありません。相関を妨げていました – GurV

+0

ああ、少なくとも、私は近くにいた。再度、感謝します。 –

関連する問題