【问题标题】:Updating fields with default values depending of the finded string根据找到的字符串使用默认值更新字段
【发布时间】:2020-11-23 09:10:20
【问题描述】:

表 tblOperation 中的 libelle_operation 字段是从不完整的外部文件导入的。在某些情况下,该字段包含一个字符串(在本例中为“PADDOCK”),对应于 tblTiers.id_tiers。

表 tblOperation 中的其他字段(id_tiers、id_type_operation 和 id_categorie_budget)为空,应使用默认值(libelle_tiers、id_type_operation 和 id_categorie_budget)进行更新。 表 tblTiers 包含最经常出现的 id_tiers 的默认值(“PADDOCK”就是其中之一)。

数据库的结构是:

表 tblTiers 的数据集是:

表 tblOperation 最初包含:

并且应该在 libelle_operation 和 id_tiers、libelle_tiers 和 id_categorie_budget 中找到“PADDOCK”之后包含这个,根据存储在表 tablTiers 中的默认值设置为默认值。

实现这个结果的正确 SQL 语句应该是什么?

【问题讨论】:

  • 为什么在 tblOperation 的两个字段中需要相同的值?为什么 tblTiers 和 tblCompte 链接到 tblPrevision 和 tblOperation?为什么需要在多个表中复制数据?在连接表的 SELECT 查询中检索相关数据,不要重复。
  • 已编辑问题中现在有解释。
  • 那个 SQL 没有意义。 UPDATE 需要一个 SET 子句,而 = 对嵌套查询是没有意义的。如果 id_tiers 为空,那么您希望如何连接表?这是您的问题中的错误吗?
  • 编辑问题以在文本表中显示原始数据和所需结果。
  • 这是在编辑问题中完成的

标签: ms-access select syntax sql-update subquery


【解决方案1】:

显示部分链接可以使用 id_compte。使用 WHERE 子句提供附加条件来关联记录。

UPDATE tblOperation INNER JOIN tblTiers ON tblOperation.id_compte = tblTiers.id_compte
SET tblOperation.id_tiers = tblTiers.id_tiers, tblOperation.id_type_operation = tblTiers.id_type_operation, tblOperation.id_categorie_budget = tblTiers.id_categorie_budget
WHERE libelle_operation LIKE "*" & libelle_tiers & "*";

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-01-22
    • 1970-01-01
    • 1970-01-01
    • 2020-01-07
    • 2021-06-22
    • 2023-03-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多