我正在尝试更新一个表中的两个字段,并使用第三个表中的信息,该信息由第二个表引用。第三个表具有填充的“ weight”字段,我将更新第一个表的“ weight”字段。它们由“序列号”关联,但是在第一个表和第三个表中,该数字的格式不同。第二张表基本上是一种引用,每种格式都有“序列号”。
我创建了一个查询,该查询使用第二个表将第一和第三个表中的数据相关联以返回字段:
SELECT
tbl_inv_main.invnum,
tbl_inv_main.model,
tbl_inv_main.serial,
tbl_viper_ref.reformattedserial,
tbl_mpn_viper.dryweight,
tbl_mpn_viper.wetweight
FROM tbl_inv_main
INNER JOIN tbl_viper_ref
ON tbl_inv_main.serial = tbl_viper_ref.serial
INNER JOIN tbl_mpn_viper
ON tbl_mpn_viper.serial = tbl_viper_ref.reformattedserial
但是现在我要做的基本上是相同的事情,只是用第三张表中的“权重”数据更新第一张表。
我尝试使用与查询中相同的INNER JOIN语句发出命令来更新第一个表。
到目前为止,我想出的是:
UPDATE "tbl_inv_main"
SET
tbl_inv_main.dryweight = tbl_mpn_viper.dryweight,
tbl_inv_main.wetweight = tbl_mpn_viper.wetweight
FROM tbl_inv_main
INNER JOIN tbl_viper_ref
ON tbl_inv_main.serial =tbl_viper_ref.serial
INNER JOIN tbl_mpn_viper
ON tbl_mpn_viper.serial = tbl_viper_ref.reformattedserial
我从其他来源了解到,应该使用来自第三张表的记录中的数据来更新第一张表中的记录。
我正在使用libreoffice Base。当我尝试运行上述UPDATE命令时,出现以下错误: 找不到列:语句[UPDATE“ tbl_inv_main”中的DRYWEIGHT 组 tbl_inv_main.dryweight]
答案 0 :(得分:0)
尝试一下:
UPDATE tbl_inv_main final
SET
final.dryweight = m.dryweight,
final.wetweight = m.wetweight
FROM tbl_inv_main i
INNER JOIN tbl_viper_ref v ON i.serial =v.serial
INNER JOIN tbl_mpn_viper m ON v.reformattedserial = m.serial
Where final.serial =i.serial