【问题标题】:How to concatenate two tables with matched columns into a single view如何将具有匹配列的两个表连接到一个视图中
【发布时间】:2013-11-11 22:31:58
【问题描述】:

我在 Microsoft Access 2007 数据库中有两个表。

其中一个具有包含 2000 条记录的“名称 1 和名称 2”列。另一个表有更多信息:它有两列名为“code1 & code2”,有 3000 条记录。每个名称都有一个代码意味着每个名称都有一个代码存储在第二个表中的列代码 1 中。

我想创建一个表或查询,显示名称 1 和名称 2 以及第二个表中的特定代码 1 和代码 2。

而且它必须只有 2000 条记录

例子:

表 1:

name-1      name-2
-----------------------------
Abacavir    Digoxin
Amprenavir  Aspirin

表 2:

code-1   drug1       
----------------
xy1      Abacavir 
xy2      Digoxin    
yxr1     Amprenavir 
uyv2     Aspirin

样本输出:

name-1     code-1  name-2  code-2
-----------------------------------------
Abacavir   xy1     Digoxin  xy2 

【问题讨论】:

  • 如果您edited您的问题向我们展示一些具有代表性的样本数据:[Table1]、[Table2] 和所需的结果,将会有所帮助。特别是,您可以说明为什么 [Table2] 中可能有多个匹配项与 [Table1] 中的给定记录,以及您要检索 [Table2] 中的哪个值,以及原因。
  • 我已经编辑过了,如果你能帮助我,请再看一遍
  • 问题是您在 table2 中有两次相同的 name1 值并且您希望两个 code1 值一起作为一个字段?您的示例数据仍然难以辨认,除了随机猜测您的要求之外,我不知道从哪里开始。
  • 不,它不像你所理解的那样......我有 2 个表 .. 一个有 2000 条记录,另一个有 3000 条记录,第二个表有第一个表中每个名称的代码,称为“药物”在表 2 中,我只希望显示表 2 中的 2000 及其代码

标签: sql ms-access


【解决方案1】:

这个表结构设计得很糟糕,但我假设你会坚持下去。您必须创建一个将 Table2 连接两次的查询......对于您链接的每个关系一次。在我的测试中,我创建了一个访问数据库并将我的表命名为简单的 Table1 和 Table2,因此您可能需要稍微更改此查询以匹配您的表/列名称。

SELECT Table1.name1, Table2a.code1, Table1.name2, Table2b.code1
FROM (Table1 LEFT JOIN Table2 AS Table2b ON Table1.name2 = Table2b.drug1) LEFT JOIN Table2 AS Table2a ON Table1.name1 = Table2a.drug1;

【讨论】:

  • 它不起作用 :'( 它给了我大约 4000 条第一行重复的记录!!
  • 我只能说,鉴于您提供的数据(数量不多),它确实有效。也许您在 table2 中有重复记录导致重复?如果是这样,在 SELECT 关键字之后添加 DISTINCT 可能会解决这个问题,但如果没有更好的数据窗口,我无法开始猜测。
【解决方案2】:

第一个有 2K,第二个有 3K,这一事实是一个线索。尝试在 SQL 语句中添加 'Distinct' 键: SELECT DISTINCT Table1.name1、Table2a.code1、Table1.name2、Table2b.code1 FROM (Table1 LEFT JOIN Table2 AS Table2b ON Table1.name2 = Table2b.drug1) LEFT JOIN Table2 AS Table2a ON Table1.name1 = Table2a.drug1;

否则我认为弗兰克成功了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-08-05
    • 2011-09-24
    • 1970-01-01
    • 2014-08-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多