Ms access 从视图更新表

Ms access 从视图更新表,ms-access,view,sql-update,Ms Access,View,Sql Update,我有以下称为cont_struct_breaks的视图: pipe_segment_reference com_struct_score com_defects com_struct_index 2610 353 111 3.2 3988 266 97 2.7 5632

我有以下称为cont_struct_breaks的视图:

pipe_segment_reference  com_struct_score    com_defects com_struct_index
2610                         353               111            3.2
3988                         266               97             2.7
5632                         49                22             2.2
我有另一个表,叫做带字段的结构_评级

pipe_segment_reference, structural_score structural_defects, structural_index   
我想从“cont_struct_breaks”中更新“structural_rating”中的值,其中管道段参照匹配

我无法理解这一点,然而,我做这样的事情很累,但没有运气

[编辑]

cont_struct_breaks视图是使用select语句创建的,如下所示:

SELECT
    structural_rating.Pipe_Segment_Reference,
    cont_struct + structural_score AS com_struct_score,
    cont_struct_d + structural_defects AS com_defects,
    ROUND(com_struct_score / com_defects, 1) AS com_struct_index
FROM ...

如果比视图更容易,则从上面的select语句更新structural_ratings表

直接替换链接答案中的信息,我得到以下信息:

UPDATE
  structural_rating
SET
  structural_rating.structural_score = RAN.com_struct_score
FROM
  structural_rating SI
INNER JOIN
  cont_struct_breaks RAN
ON 
  SI.pipe_segment_reference = RAN.pipe_segment_reference
您可能希望更改别名的名称以减少混淆,但它可以按原样正常工作

因此,现在需要更新其他字段。一次更新多个字段时,只需使用逗号将其分隔:

SET
  structural_rating.structural_score = RAN.com_struct_score,
  structural_rating.structural_defects = RAN.com_defects,
  structural_rating.structural_index = RAN.com_struct_index
因此,您的完整查询应该是:

UPDATE
  structural_rating
SET
  structural_rating.structural_score = RAN.com_struct_score,
  structural_rating.structural_defects = RAN.com_defects,
  structural_rating.structural_index = RAN.com_struct_index
FROM
  structural_rating SI
INNER JOIN
  cont_struct_breaks RAN
ON 
  SI.pipe_segment_reference = RAN.pipe_segment_reference

最后,我将此操作写入新表而不是视图,然后运行以下操作:

UPDATE structural_rating
INNER JOIN cont_struct
ON structural_rating.pipe_segment_reference = cont_struct.pipe_segment_reference
SET
structural_score = cont_struct.com_struct_score,    
structural_defects = cont_struct.com_defects,     
structural_index = cont_struct.com_struct_index;

“语法错误(从RAN.com_struct_index开始的查询表达式中缺少运算符)”必须由语法或字段名问题引起。看到这个对一个类似问题的回答,我的语法结构是相同的:我认为链接用于sql server是行不通的。我正在使用MS Access。另外,请检查您的数据。在适当的地方添加Trim()或Nz()(*即structural_rating.structural_index=Nz(Trim(RAN.com_struct_index))*)。SQL是SQL。Update语句的语法在Access和SQL Server中都是相同的。这是一个链接数据库,还是完全是本机Access?如果是链接的,则是您正在执行的本机(传递)SQL或链接表上的Access更新。此外,如果链接,什么是RDBMS,MS SQL Server?不幸的是,尽管80%的SQL在RDBMS平台上是通用的,但更新查询是它们差异很大的领域之一。