UPDATE表,包含来自同一表的选择信息

时间:2012-05-11 16:47:40

标签: sql ms-access

根据此SQL Update info using other record from the same table

的信息和帮助

我注意到它没有正常工作。

问题是:

它将表NOEUD与从内连接中的子查询创建的表连接起来。 它仅更新子查询表中的noeud,而不更新noeud表中的所有节点。

在子查询上正确选择(列出具有1m电缆距离的noeud.n_amont = noeud.noeud的所有字段)因为n_amont是先前的noeud。我想从选择中更新所有n_amont,它与整个表noeud中的对应noeud相匹配。

提前致谢。

UPDATE [SELECT noeuds.* FROM noeuds WHERE (((noeuds.LONG_CABLE)="    1") AND (noeuds.DELETED=" "))]. AS a INNER JOIN noeuds AS n ON a.n_amont=n.noeud SET n.INSEE_COM = a.INSEE_COM, n.RIVOLI = a.RIVOLI, n.NUM_VOIE = a.NUM_VOIE
WHERE ((n.INSEE_COM)="     ");

有人可以帮忙吗?

编辑:


我有这张桌子(noueds):

NOEUD   TYPE_MAT  N_AMONT   LONG_CABLE   RIVOLI (+3 fields for update)
123     REP       100       12           abc
130     AMP       229       12            
173     PPP       130        1           AAA

我想写一个UPDATE查询来填充NODES.LONG_CABLE = 1之后的节点的所有数据ADDRESS。

例如:

我搜索了所有LONG_CABLE = 1的节点,给了我noeud 173;那么130之前的节点应该具有相同的rivoli 173。

此电缆为我提供了某些街道上安装的此设备的地址。当我填写PPP(类型)时,它不会将地址转换为同一极点或人孔(距离1米=连接器)的地址。

通过我发布的这个查询,我可以选择具有前一个节点的节点(173),但是当加入它时,只加入n_amont 130(节点相关130),如果它距其他装备1米远。在这种情况下,它将被忽略,并且地址不会更新。 查询可以在表NOEUDS上运行,然后找到需要更新的装备。

更难以解决这个问题吗?

1 个答案:

答案 0 :(得分:1)

请改为尝试:

UPDATE noeuds INNER JOIN 
(SELECT noeuds.* FROM noeuds WHERE (((noeuds.LONG_CABLE)=" 1") AND (noeuds.DELETED=" "))) a ON noeuds.n_amount = a.n_amount
SET noeuds.insee_com = a.insee_com, noeuds.rivoli = a.rivoli, noeuds.num_voie = a.num_voie