2017-02-06 5 views
0

В настоящее время используется Microsoft SQL Server 2012 (Management Studio), которая пытается обновить столбец в таблице с запросом, который использует данные из другой таблицы.Обновление таблицы с результатами из нескольких таблиц

Это запрос я бегу:

SELECT   
    tblGeneralVehicleInformation.EngineerVehicleReg, tblModel.Model_ID, 
    tblModel.VanOrCar, tblModel.Model, tblMake.Make_ID, 
    tblMake.WarrantyCars, tblMake.WarrantyVans, 
    tblMake.WarrantyCarMonths, tblMake.WarrantyVanMonths, 
    tblGeneralVehicleInformation.PurchaseDate, 
    tblGeneralVehicleInformation.Mileage 
FROM    
    tblGeneralVehicleInformation 
INNER JOIN 
    tblModel ON tblGeneralVehicleInformation.Model_IDFK = tblModel.Model_ID 
INNER JOIN 
    tblMake ON tblGeneralVehicleInformation.Make_IDFK = tblMake.Make_ID 


UPDATE dbo.tblGeneralVehicleInformation 
SET WarrantyId = '1' 
WHERE (tblModel.VanOrCar = N'Van') 
    AND (Mileage > WarrantyVans) 
    AND (DateDiff("M",PurchaseDate,CURRENT_TIMESTAMP) > WarrantyVanMonths) 

В случае, если эта работа или вы не в состоянии иметь запрос, как выше в пределах UPDATE заявления?

Спасибо за вашу помощь

ответ

1

Вы должны объединить обоих в одном операторе. Я бы также посоветовал вам начать использовать псевдонимы таблиц, чтобы сделать ваш код немного более читаемым ...

UPDATE v 
SET WarrantyId = '1' 
FROM tblGeneralVehicleInformation v 
    INNER JOIN tblModel mo 
     ON v.Model_IDFK = mo.Model_ID 
    INNER JOIN tblMake ma 
     ON v.Make_IDFK = ma.Make_ID 
WHERE (mo.VanOrCar = N'Van') 
    AND (Mileage > WarrantyVans) 
    AND (DateDiff("M",PurchaseDate,CURRENT_TIMESTAMP) > WarrantyVanMonths)