繁体   English   中英

使用MS Access如何使用多个连接和where子句执行更新?

[英]Using MS Access how to perform an update with multiple joins and where clauses?

我在使一些MS Access SQL工作时遇到了一些麻烦。 这是高级别:

我在一个表中有值,通过by15official我需要用来更新另一个表, investmentInfo相关记录。 非常简单,除了我需要执行的相当多的连接以确保在investmentTable更新正确的记录,我想我可以用常规的sql来解决这个问题,但Access并不能很好地发挥作用。 以下是我试图使用的sql(导致此错误:“查询表达式中的语法错误(缺少运算符)...”

update ii
set ii.investmentType = by15.InvestmentType
from investmentInfo as ii
inner join 
    (select by15Official.InvestmentType, by15Official.InvestmentNumber
     from (((by15official left join investmentinfo on by15official.InvestmentNumber = investmentInfo.investID) 
    left join fundingSources on fundingSources.investId = investmentInfo.id)
    left join budgetInfo on budgetInfo.fundingID = fundingSources.id)
    where investmentinfo.submissionType = 2
    and budgetInfo.byYear = 2015
    and budgetInfo.type = 'X') as by15
on by15.InvestmentNumber = ii.investID

这似乎应该工作,我试图加入这组提供investmentType的表,这是我想在主表investmentInfo更新。 思考? 这可以在Access中完成吗? 我已经google了一下,发现了上面我适应了我的需求(实际上我很确定我在SO上找到了上面的内容)。

思考?

非常感谢你!

我在MS论坛上得到了一些人的帮助。 解决方案是以稍微不同的方式格式化我的SQL。 这是最终有效的代码。

UPDATE 
(
 (
   by15official LEFT JOIN investmentinfo 
   ON by15official.InvestmentNumber = investmentInfo.investID 
 )
 LEFT JOIN 
 fundingSources 
 ON investmentInfo.id = fundingSources.investId 
) 
LEFT JOIN budgetInfo 
ON fundingSources.id = budgetInfo.fundingID

SET investmentInfo.investmentType = by15official.InvestmentNumber

WHERE (investmentinfo.submissionType = 2)
And (budgetInfo.byYear = 2015)  

也许上面的Access SQL可以帮助其他人。

基本上你想在执行set和where子句之前进行更新和连接。 有道理,我相信如果我更擅长编写SQL,我就会知道。

我知道这不使用原始代码,但这是一个具有正确语法的通用示例:

UPDATE ([My First Table]
LEFT JOIN [My First Table] ON [My Second Table].[RequestID] = 
    [My First Table].[ID])
INNER JOIN [My Third Table] ON [My Second Table].[Some Field] = 
    [My Third Table].[Matching Field]
SET 
 [My First Table].[Approved By] = [My Third Table].[Approver], 
 [My First Table].[Approval Date] = [My Second Table].[Modified]
WHERE [My First Table].[Review Status] LIKE '*Approved*'

在Access中查找SQL中的连接的最简单方法是转到“查询设计”窗口,添加所需的表,然后单击并将“列”拖动到要加入的表中。 你为所有的桌子做这个,并且你的联接已经完成。 此外,如果您的连接变得过于复杂,通常意味着存在数据库设计问题,但我知道修复此问题并不总是生产数据库中的选项。 祝好运!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM