在关系代数中,如何将表连接到自身上?
问题:
分支(分支名称,分支城市,资产)
帐户(帐户编号,分支名称,余额)
现在,考虑以下SQL查询:
Select T.branch_name
From branch T, branch S
Where T.assets > S.assets and S.branch_city = “Shanghai”
编写与该查询等效的最优化的关系代数表达式。证明您的选择。
我有点困惑。我知道如何将两个表连接在一起,例如分支到帐户,但是我不确定在这种情况下如何将两个相同的表连接在一起。
感谢您的帮助,谢谢。
您将像这样将两个表连接在一起:
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)
很抱歉,如果上面的内容含糊不清,并且没有使用您的确切变量名称-我对您在上面给出的示例中有些困惑,因此,如果您要更新问题或发表评论,我可以更新示例。