表格:
Contest(starter, ender, pointsStarter, pointsEnder, debatedate)
Debater(name, club, age)
查询:
提供首发辩论者所在比赛的所有比赛详情 “柏拉图”俱乐部并阻止他的对手得分。
我写的SQL:
SELECT starter, pointsStarter, ender, pointsEnder, debatedate
FROM contest
WHERE pointsEnder = 0
AND starter IN (SELECT name FROM debater WHERE club = 'Plato')
关系代数我写过:
Π starter,ender,pointsStarter,pointsEnder,debatedate (
Ϭ Contest.pointsEnder=0 (
Ϭ club=”Plato” (Contest Debater)))
域关系微积分我写过:
{< starter,ender,pointsStarter,pointsEnder,debatedate> |
Ǝ < starter,ender,pointsStarter,pointsEnder,debatedate > ϵ Contest (
Ǝ < name,club,age > ϵ Debater (
^ pointsEnder=0 ^ club=”Plato”))
}
答案 0 :(得分:0)
明显错别字:在微积分中的pointsEnder之前有一个错误的^
。你可能想要在Contest
&amp;在你的代数中Debater
。
您尚未提及代数和版本的版本。你要使用的微积分。所以我们只能猜测修正的可能性。您不太可能需要Contest.
。
注意你的代数&amp;微积分没有等同于起动器和放大器。名称。如果您的加入是自然的,则需要在name
周围将starter
重命名为Debater
。你最里面的微积分需要一个额外的结合,等同于它们。
您不希望通过以下方式删除结果列:
Π starter,ender,pointsStarter,pointsEnder,debatedate (...)
您想要删除非结果列。如果您的加入是自然的:
Π club, age (...)
类似地,微积分查询的结果列必须在右侧表达式中显示为自由(不由Ǝ量化)。所以而不是:
Ǝ < ... > ϵ Contest (...)
你需要这样的东西:
Ǝ < s,e,ps,pe,dd > ϵ Contest (
s=starter ^ e=ender ^ ps=pointsStarter ^ pe=pointsEnder ^ dd=debatedate
^ ...)