【问题标题】:Natural Join of different tables不同表的自然连接
【发布时间】:2013-01-27 17:03:24
【问题描述】:

您能否向我解释一下如何对这两个关系进行 NATURAL JOIN(一个有 5 行,另一个有 3 行?

第一个关系

A   C
3   3
6   4
2   3
3   5
7   1

第二个关系

B   C   D
5   1   6
1   5   8
4   3   9

【问题讨论】:

    标签: relational-algebra


    【解决方案1】:

    在您的问题中,您有两个独立的关系,它们有一个共同的属性(即列):C.

    自然连接会将两个关系中的所有元组与该属性相同。你最终会得到结果:

    A B C D    
    
    7 5 1 6  
    3 4 3 9
    2 4 3 9
    3 1 5 8
    

    这可以通过使用@Matthew 发布的代码在 SQL 中执行。

    【讨论】:

      【解决方案2】:

      类似:

      SELECT * FROM 1stRelation NATURAL JOIN 2ndReleation

      它会做同样的事情,并使用显式的列名进行内部连接。即:

      SELECT * from 1stRelation as x INNER JOIN 2ndRelation as z ON x.C=z.C

      就个人而言 - 我不喜欢使用它们,除非我事先不知道表结构但知道它们应该能够被连接。

      【讨论】:

        【解决方案3】:

        基本上你做一个交叉连接,即。 e.您将第一个关系的每一行与第二个关系的每一行结合起来。然后你有两个 C 列。现在您消除两个 C 不相等 的每一行,并将它们合并为仅一列 C。

        【讨论】:

          猜你喜欢
          • 2016-07-10
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2017-03-20
          • 2019-05-05
          • 1970-01-01
          • 2017-06-30
          相关资源
          最近更新 更多