I am currently converting a project that uses Access as a database to using 
SQLite. Part of this involves rewriting sql queries.
So far this has been OK, however I have struck a problem with an UPDATE query. 
The following access sql query updates some fields in a table depending on 
existing values in other fields in the table and uses a sub query

 UPDATE EvAtemp INNER JOIN 
[SELECT EstimateIndex.Date, QAK1Data.JobNo, CodesIndex.Code, 
FunctionsIndex.Function, 
EstimateDetail.Hours, EstimateDetail.Rate, EstimateDetail.EmpTime, 
EstimateIndex.Contingent, 
EstimateDetail.Hours*EstimateDetail.Rate AS Charge, 
(EstimateDetail.Hours*EstimateDetail.Rate)*(1+(EstimateIndex.Contingent/100)) 
AS TotalCharge 
FROM (((EstimateDetail INNER JOIN EstimateIndex ON EstimateDetail.EstID = 
EstimateIndex.EstID) 
INNER JOIN QAK1Data ON EstimateIndex.EstProjNo = QAK1Data.ProjRecID) 
INNER JOIN CodesIndex ON EstimateDetail.EstCodeRec = 
CodesIndex.CodesIndexRecID) 
INNER JOIN FunctionsIndex ON EstimateDetail.EstFuncRec = 
FunctionsIndex.FunctionsIndexRecID]. AS Q ON EvAtemp.JobNo = Q.JobNo 
SET EvAtemp.EstimateDate = [Q].[Date], EvAtemp.CodeEst = [Q].[Code], 
EvAtemp.FunctionEst = [Q].[Function], 
EvAtemp.HoursEst = [Q].[Hours], EvAtemp.RateEst = [Q].[Rate], EvAtemp.EmpTimeE 
= [Q].[EmpTime], 
EvAtemp.Contingent = [Q].[Contingent], EvAtemp.ChargeEst = [Q].[Charge], 
EvAtemp.TotalCharge = [Q].[TotalCharge] 
WHERE (((EvAtemp.Code)=[Q].[Code]) AND ((EvAtemp.Function)=[Q].[Function])); 

My attempt in SQLite is

UPDATE EvAtemp 
SET [EstDate] = [Q].[Date], 
[CodeEst] = [Q].[Code], 
[FunctionEst] = [Q].[Function], 
[HoursEst] = [Q].[Hours], 
[RateEst] = [Q].[Rate], 
[EmpTimeE] = [Q].[EmpTime], 
[Contingent] = [Q].[Contingent], 
[ChargeEst] = [Q].[Charge], 
[TotalCharge] = [Q].[TotalCharge ] 
(SELECT [EstimateIndex].[Date], [QAK1Data].[JobNo], [CodesIndex].[Code], 
      [FunctionsIndex].[Function], [EstimateDetail].[Hours], 
      [EstimateDetail].[Rate], [EstimateDetail].[EmpTime], 
      [EstimateIndex].[Contingent], [EstimateDetail].[Hours] * 
      [EstimateDetail].[Rate] AS [Charge], ([EstimateDetail].[Hours] * 
      [EstimateDetail].[Rate]) * (1 + ([EstimateIndex].[Contingent] / 
      100)) AS [TotalCharge] 
    FROM [EstimateIndex] INNER JOIN 
      [EstimateDetail] ON [EstimateIndex].[EstID] = [EstimateDetail].[EstID] 
      INNER JOIN 
      [QAK1Data] ON [EstimateIndex].[EstProjNo] = [QAK1Data].[ProjRecID] 
      INNER JOIN 
      [CodesIndex] ON [EstimateDetail].[EstCodeRec] = 
        [CodesIndex].[CodesIndexRecID] INNER JOIN 
      [FunctionsIndex] ON [EstimateDetail].[EstFuncRec] = 
        [FunctionsIndex].[FunctionsIndexRecID]) [Q] 
WHERE [Code]=[Q].[Code] 
AND [Function]=[Q].[Function] 
AND [ProjNo] = [Q].[JobNo] 

This does not work. I have tried many variations with no success.
I hope that some one can point me in the right direction with an example of 
correct useage.

thanks
Phil
_______________________________________________
sqlite-users mailing list
sqlite-users@sqlite.org
http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users

Reply via email to