2017-02-15 1 views
1

SchemaЯ пытаюсь выполнить следующий запрос, но он всегда выдает сообщение об ошибке

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

Я всегда получаю ошибку на CURRENT_DATE, NULL.It говорит синтаксис ошибка в или около 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); 

Я выбрал FALSE для значения RentOverdue, который, кажется, согласны с вашей логикой.

+0

Спасибо, положите x.DatePaid в свои вопросительные знаки. – daniel

2

INSERT INTO требует названия столбцов, в которые должны быть вставлены данные, после имени таблицы. Очевидно, что CURRENT_DATE и NULL не являются именами столбцов.