2017-02-15 11 views
1

スキーマは、私は次のクエリを実行しようとしていますが、それは常に私はいつもCURRENT_DATE上のエラーを取得エラー

Tenants (HouseID, ApartmentNumber, LeaseTenantSSN, LeaseStartDate(not null), LeaseExpirationDate(can be null), 
Rent, LastRentPaidDate, RentOverdue) 
NewRentPayments (HouseID, ApartmentNumber, LeaseTenantSSN(not null), Rent(can be null), DatePaid) 

クエリ

INSERT INTO Tenants (x.HouseID,x.ApartmentNumber,x.LeaseTenantSSN,CURRENT_DATE,NULL,x.Rent,x.Rent,FALSE) 
SELECT x.HouseID, x.ApartmentNumber,x.LeaseTenantSSN,CURRENT_DATE,NULL,x.Rent,x.Rent     
FROM NewRentPayments x 
WHERE x.HouseID NOT IN (select HouseID 
       FROM Tenants) 
     OR x.ApartmentNumber NOT IN (SELECT ApartmentNumber 
        FROM Tenants 
        WHERE Tenants.HouseID=x.HouseID); 

を報告し、NULL.Itはまたはでsintaxエラーを語りますCURRENT_DATE付近

答えて

2

構文はオフです。 INSERT INTOの後には、データを挿入する予定の列名のリストであり、次のようにSELECTをソースとして使用する必要があります。このような何かが動作するはずです:

INSERT INTO Tenants (HouseID, ApartmentNumber, LeaseTenantSSN, LeaseStartDate, 
        LeaseExpirationDate, Rent, LastRentPaidDate, RentOverdue) 
SELECT x.HouseID, x.ApartmentNumber, x.LeaseTenantSSN, CURRENT_DATE, NULL, x.Rent, 
     x.DatePaid, FALSE 
FROM NewRentPayments x 
WHERE x.HouseID NOT IN (SELECT HouseID FROM Tenants) OR 
     x.ApartmentNumber NOT IN (SELECT ApartmentNumber FROM Tenants 
           WHERE Tenants.HouseID=x.HouseID); 

を私はあなたのロジックに同意しているようだRentOverdue値、のためにFALSEを選択しました。

+0

ありがとうございます。x.DatePaidを疑問符に入れてください。 – daniel

2

INSERT INTOには、テーブル名の後に、指定したデータを挿入する必要がある列の名前が必要です。明らかに、CURRENT_DATENULLは列の名前ではありません。

関連する問題