【问题标题】:Joining tables and displaying for comparision连接表格并显示以进行比较
【发布时间】:2016-09-24 21:45:26
【问题描述】:

我有三张表 person、address 和 ID。

ID 表有两列 ID1 和 ID2。我正在尝试从人员和地址中获取数据以进行比较,如下所示。

当 ID1 = Person.ID = Address.ID 并且 ID2 = person.ID = Address.ID 时

________________________________________________________________________ 
name 1  age1    address1    city1   name2   age2    address2    city2
_________________________________________________________________________
abc      34    123 street    LA      abc    34     111 street   LA
xyz      22     New Street   DC      xyz    22     New Street   DC
___________________________________________________________________________

所以基本上我想根据 ID1 显示上表的前半部分,用 ID2 显示表的后半部分。 我怎样才能使这项工作我是新来的查询任何帮助表示赞赏。

【问题讨论】:

  • 如果可以,请发布您的表格结构。表的顺序不正确。请进行更改
  • 如果您说明您最初的业务问题是什么,您可能会获得更多帮助。例如,在对 Gordon 的回答的评论中,我推测您的业务案例可能是什么。如果这确实是您需要它的原因,您可能不需要并排显示数据;有更好的方法来进行这些比较。
  • 我们正在合并记录,ID 表包含已找到的可能候选记录的 rowid。我们希望以这样的方式将它们放入 excel 中,以便我们可以并排查看所有记录,我知道这听起来很老套,但这是计划。
  • 为什么不在数据库里做呢?比较两个表中的行(当它们应该相同或至少几乎相同时)是一项常见任务,并且有经过充分研究的解决方案,Oracle 也为此提供了一个包。
  • 这更适合技术不高的观众,但我想了解您提到的 Oracle 软件包

标签: sql oracle join


【解决方案1】:

我认为您正在寻找这样的东西:

select p1.name as name1, . . . 
from id join
     address a1
     on id.id1 = a1.id join
     person p1
     on id.id1 = p1.id join
     address a2
     on id.id2 = a2.id join
     person p2
     on id.id2 = p2.id;

注意:你的数据结构看起来很奇怪。在两个不同的实体(“人”和“地址”)之间共享一个名为 id 的列对我来说似乎不正确。

【讨论】:

  • 推测...也许他们在两个平行的地方拥有相同的信息(身份证、姓名、地址),现在他们正在整合,确保它做得对?此系统中的相同信息有 ID1,在另一个 ID2 中......现在它们正在合并?
  • 完全正确,所以我们要生成报告并比较它们。 ID 表中的 Id 是 rowid,用于从相应的表中获取数据。
猜你喜欢
  • 2013-08-18
  • 1970-01-01
  • 1970-01-01
  • 2014-02-22
  • 1970-01-01
  • 1970-01-01
  • 2014-01-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多