SQL查询关系代数,如何连接相同的表?

问题描述 投票:0回答:1

在关系代数中,如何将表连接到自身上?

问题:

分支(分支名称,分支城市,资产)

帐户(帐户编号,分支名称,余额)

现在,考虑以下SQL查询:

Select T.branch_name  
From branch T, branch S  
Where T.assets > S.assets and S.branch_city = “Shanghai”  

编写与该查询等效的最优化的关系代数表达式。证明您的选择。

我有点困惑。我知道如何将两个表连接在一起,例如分支到帐户,但是我不确定在这种情况下如何将两个相同的表连接在一起。

感谢您的帮助,谢谢。

sql algebra relational
1个回答
0
投票

您将像这样将两个表连接在一起:

SELECT * FROM
branch INNER JOIN account ON (branch.X=account.Y)
WHERE ...

要做一个自我联接,除了对一个表(或两个表)加别名之外,您将做同样的事情,这更清楚:

SELECT * FROM
branch AS branch1 JOIN branch AS branch2 ON (branch1.X=branch2.Y)
WHERE ...

此外,您可以将WHERE子句放在连接条件本身中:

SELECT * FROM
branch AS branch1 JOIN branch AS branch2 ON (branch1.X=branch2.Y AND branch1.A > branch2.B)

很抱歉,如果上面的内容含糊不清,并且没有使用您的确切变量名称-我对您在上面给出的示例中有些困惑,因此,如果您要更新问题或发表评论,我可以更新示例。

© www.soinside.com 2019 - 2024. All rights reserved.