我已经阅读了一个Natural Join
示例,其中涉及2个具有2个相同列名的关系。我理解在2个表中具有1个相同列名的那些,但对于这种情况真的不知道。
任何人都可以向我解释如何获得输出(不是在Sql命令中)?
谢谢!
答案 0 :(得分:4)
公共列是B和D,因此如果它们具有相同的B和D值,则来自两侧的行匹配 该示例中的公共(B,D)值是(1,a)和(2,b) 来自r'的2行将(1,a)与s'中的2行匹配,创建4个组合 来自r'的一排将(2,b)与s'中的1行匹配,创建单个组合 因此,结果集中有5行。
答案 1 :(得分:1)
每个元组都是一个具有每个属性值的集合。当两个元组就其共同属性的所有值达成一致时,就会有一个元组,即它们的集合。例如r {AαB1CαDa} U s {B 1 D aEα} = {AαB1CαDaEα}。否则没有元组是他们的集合联盟。例如,对于r {AαB1CαDa}和s'{B 3 D aEβ}。
两个关系的自然连接是一组元组,它们是每个元组的元组的集合。我们通过查看每个元组的每一对来计算它,如果有一个元组是它们的集合,那么它就在结果中。
所以r⋈s是一组元组,它们是来自r的元组和来自s的元组的集合并。我们通过查看来自s的r元组中的每一对元组来计算它,如果有一个元组是它们的集合,那么它就在结果中。
首先,r的{AαB1CαDa}和s的{B 1 D aEα}在它们的共同属性的值上是一致的。所以他们的集合{AαB1CαDaEα}在r⋈s。
接下来,r的{AαB1CαDa}和s的{B 3 D aEβ}对于它们的共同属性具有不同的值。所以没有元组是他们的集合联盟。所以这对元组在r⋈中没有集合。
继续使用r& s中的每一对元组。第