【问题标题】:Derived Tables vs Queries and Updating Data派生表与查询和更新数据
【发布时间】:2021-03-21 01:00:49
【问题描述】:

我们使用连接到数据库的软件,该数据库对表中的记录有一定的要求样本

CREATE TABLE `sample` (
  `sample_id` varchar(255) PRIMARY KEY,
  `depth_from` real,
  `depth_to` real,
  `hole_id` varchars,
  `bag_id` varchar(255),
  `type` varchar(255),
  `weight` real,
);

sample.type 'rock chip' 的样本有一个 sample.depth_from 值,而 sample.type 'crm' 的样本没有.该软件使用子集“岩石芯片”来显示井下日志。即我需要使用表 sample 的子集。

SELECT *
FROM sample
WHERE sample.type="rock chip"
;

太多细节?

这就是问题所在;由于引入了 .accdb,我无法直接连接到查询,我假设是因为更新了数据类型。该软件最初旨在执行此操作,因为这是一种非常常见的数据集。因此,除了非常恼火之外,我还尝试使用派生表来解决这个问题。但是,我如何写回原始表?通过查询,更改和新记录将写入 sample 表。我认为 assay 是暂时的,因此无法进行更改。我看到问题出现了。

此外,新表查询必须手动运行,这肯定是个问题。用户不能乱用查询。

SELECT * INTO assay
FROM sample
WHERE sample.type="rock chip"
;

您将如何临时制作一张表格并确保可以将其写回原始表格?有没有办法让这种情况自动发生?

在 MS Access 中。

【问题讨论】:

    标签: sql ms-access derived-table


    【解决方案1】:

    听起来你想要一个视图:

    CREATE VIEW assay AS
        SELECT *
        FROM sample
        WHERE sample.type = "rock chip";
    

    这是在用户使用视图时评估的。因此,它始终是最新的。

    【讨论】:

    • “Microsoft Access 数据库引擎不支持在非 Microsoft Access 数据库引擎数据库中使用 CREATE VIEW 或任何 DDL 语句。”
    • 我唯一能猜到的是最后的分号。但是,这需要直接在数据库中完成:docs.microsoft.com/en-us/office/client-developer/access/…。尽管您可能正在使用 MS Access 作为数据库。
    • 它只是创建一个查询。叹。不上班
    • 如果它只是创建一个查询,我不明白 CREATE VIEW 的意义。
    猜你喜欢
    • 2012-08-06
    • 2021-11-03
    • 1970-01-01
    • 1970-01-01
    • 2014-09-17
    • 1970-01-01
    • 2013-08-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多