2017-02-15 3 views
1

SchemaIch versuche, die folgende Abfrage auszuführen, aber es meldet immer einen Fehler

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) 

Abfrage

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

ich immer einen Fehler auf CURRENT_DATE bekommen, NULL.It sagt sintax Fehler bei oder in der Nähe von CURRENT_DATE

Antwort

2

Ihre Syntax ist ausgeschaltet. Nach INSERT INTO sollte eine Liste der Spaltennamen sein, in die Sie die Daten einfügen möchten, mit dem folgenden SELECT als Quelle. So etwas sollte funktionieren:

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

ich ausgewählt FALSE für den RentOverdue Wert, der mit Ihrer Logik zu vereinbaren scheint.

+0

Danke, setzen x.DatePaid in Ihrer Fragezeichen. – daniel

2

INSERT INTO erfordert den Namen der Spalten in der die die gegebenen Daten, nach dem Tabellennamen eingefügt werden müssen. Offensichtlich CURRENT_DATE und NULL sind nicht die Namen der Spalten.

Verwandte Themen