【问题标题】:Access database 2013 - Join three tables with list of data values in two of the tablesAccess 数据库 2013 - 将三个表与其中两个表中的数据值列表连接起来
【发布时间】:2016-09-05 22:54:52
【问题描述】:

我的主 Access 表包含 95 行。一列是一个名称字段,在每个字段中都有一个唯一的名称。另外两个表也有一个名称列,但每个表的名称字段都包含一个或多个名称,用逗号和空格分隔。这些表的长度也不同,一个有 99 行,另一个有 33 行。

我需要将这些表格中的数据链接到一个综合表格。为此,我想我想使用主表名称字段中的值进行交叉表查询。它将需要搜索其他表的名称字段以查看列出的名称之一是否匹配。

请帮忙。

【问题讨论】:

  • 1) 名称在每种情况下都完全相同吗?否则匹配名称可能非常困难。 2) 能否将第二张和第三张表更改为字段中只有一个名称,必要时有多个记录? 3)你在寻找什么作为交叉表的列?我知道您需要第一个表中的每个名称 1 行,但不了解您希望看到的列。 4) 第三张表(99 行)中的姓名是否比第一张表(95 行)中的姓名多 - 你想用额外的东西做什么?

标签: database ms-access join


【解决方案1】:

你在找这个吗:

SELECT * FROM mainTable, Tble99Rows, Tbl33Rows 
WHERE InStr(mainTable.Name, Tble99Rows.Name) AND InStr(mainTable.Name,  Tble33Rows.Name)

? 请注意,它可能不准确,例如:它将链接名称为 MaxMaxine 的记录。

对于正确的表连接,请关注Data-Base normalization rules,在我们的例子中为the First rule:关系中的所有属性都必须具有原子域。原子域中的值是不可分割的单位。

编辑:
请阅读更多:Is storing a delimited list in a database column really that bad?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-11
    • 1970-01-01
    • 2013-05-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多