【发布时间】:2013-02-21 08:31:02
【问题描述】:
一点背景:
在这个项目中,我试图合并从不同应用程序中获取的 2 个表。
其中一个应用程序给了我几个表格,我已经成功地将它们组合成一个表格:
DB_Total
另一个应用程序给了我一个只有标记名的表。这个表叫做:
TagNames_EA
现在,我想将“TagNames_EA”表中的“名称”列添加到“DB_Total”表中,以便比较“名称”字段中的值。
到目前为止,我有这段代码可以比较和过滤掉不匹配的名称:
SELECT
d.Address,
d.Type,
d.Name,
IIf(t.Name Is Null, False, True) AS match_found
FROM
DB_Total AS d
LEFT JOIN TagNames_EA AS t
ON d.Name = t.Name;
这很好用,但我还想查看 DB_Total 表中 TagNames_EA 表中的“名称”值。
我知道可以在现有表中添加一列
ALTER TABLE DB_Total
ADD Names_EA
但是,当我尝试这个时:
ALTER TABLE DB_Total
ADD Names FROM TagNames_EA AS Names_EA
没有用
有没有简单的方法可以做到这一点?
编辑:我试图简化我解释我的情况的方式。
Edit2:示例
在“DB_Total”表中,我有一个名称列表,应该与“EA_Names”表中的名称完全相同。
DB_Total:
Name
S1\SVS_AK\ENA[3]
S1\SVS_AK\ENA[4]
S1\SVS_AK\ENA[5]
S1\SVS_AK\ENA[6]
S1\SVS_AK\ENA[7]
S1\SVS_AK\ENA[8]
但是,有时会出错,我想检查是否存在不匹配的名称。像这样:
TagNames_EA
Name
S1\SVS_AK\ENA[3]
S1\SVS_AK\ENA[4]
S1\SVS_AK\ENA[5]
S1\SVS_AK\EMA[6] <--- This is a Mistake and will come up as a mismatch
S1\SVS_AK\ENA[7]
S1\SVS_AK\ENA[8]
目前,我使用的代码向我的 DB_Total 表添加了一个新列,其值为“-1”(用于匹配)或值“0”(用于不匹配的名称)
看起来像这样:
DB_Total:
Name match_found
S1\SVS_AK\ENA[3] -1
S1\SVS_AK\ENA[4] -1
S1\SVS_AK\ENA[5] -1
S1\SVS_AK\ENA[6] 0
S1\SVS_AK\ENA[7] -1
S1\SVS_AK\ENA[8] -1
我想要完成的是一个包含以下内容的表格:
DB_Total:
Name Names_EA match_found
S1\SVS_AK\ENA[3] S1\SVS_AK\ENA[3] -1
S1\SVS_AK\ENA[4] S1\SVS_AK\ENA[4] -1
S1\SVS_AK\ENA[5] S1\SVS_AK\ENA[5] -1
S1\SVS_AK\ENA[6] S1\SVS_AK\EMA[6] 0
S1\SVS_AK\ENA[7] S1\SVS_AK\ENA[7] -1
S1\SVS_AK\ENA[8] S1\SVS_AK\ENA[8] -1
在 Joe 发表评论后,如果我还想在同一个表中查看 EA_Table 的名称值,我开始怀疑这是正确的方法。
【问题讨论】:
-
我很困惑。你是按名字加入的。因此,Tagnames_EA 表中的名称已经存在 - 它们与 DB_Total 表中的名称相同。您是否要求也显示不匹配的内容?
-
我理解这种困惑,我会尽量让过去两周没有使用此数据库的人更清楚一点!
-
目前,它在 DB_Total 表中添加一个名为“match_found”的列 如果两个表中的名称匹配,则“match_found”列中的相应字段返回“-1”,如果它们不' t 匹配,它返回一个“0”
-
抱歉,这无济于事,因为我认为您没有理解我的评论。根据您在上面发布的 SQL 代码,您的新表(如果您从该选择创建它)将包含 DB_Total 表的所有行,如果它在 tagnames 表中找到,则带有指示符;但是没有第二个变量可以添加。您能否展示每个表格中的数据示例以及您希望看到的结果?
-
您将如何确定 EMA 行应与 ENA 行匹配?当然,您的加入不会实现这一点。
标签: sql ms-access ms-access-2007