将sql转换为元组关系演算

将sql转换为元组关系演算,sql,tuples,tuple-relational-calculus,Sql,Tuples,Tuple Relational Calculus,我试图将sql查询转换为元组关系演算,但有一个不存在导致我陷入困境 SQL查询: SELECT num FROM a a1, b b1 WHERE a1.num = b1.no AND a1.name = "Tim" AND NOT EXIST (SELECT * FROM a a2, b b2 WHERE a2.num = b2.no AND a2.name = "Tim" AND b2.rating > b1.rating) 我已经开始了: { t: n

我试图将sql查询转换为元组关系演算,但有一个
不存在
导致我陷入困境

SQL查询:

SELECT num FROM a a1, b b1
WHERE a1.num = b1.no AND a1.name = "Tim"
AND NOT EXIST
    (SELECT * FROM a a2, b b2
     WHERE a2.num = b2.no AND a2.name = "Tim" 
     AND b2.rating > b1.rating)
我已经开始了:

{ t: num | ∃a1 ∈ a ∃b1 ∈ b [ t(num) = a1(num) ∧ a1.name = "Tim" ∧ ¬∃a2 ∈ a ...

这就是我被困的地方。如何从
a2
b2
中显示它不存在?如果我写
∃a2∈ a——∃b2∈ b
那么这将是一个双嵌套sql查询,而不是上面列出的查询。

您希望其中不存在
a2
b2

SQL表达式

NOT EXISTS (SELECT * FROM a a1, b b2 WHERE ...)
¬(∃ a2 ∈ a ∃ b2 ∈ b [...]) 
对应于元组演算表达式

NOT EXISTS (SELECT * FROM a a1, b b2 WHERE ...)
¬(∃ a2 ∈ a ∃ b2 ∈ b [...]) 

在SQL中,子查询中有
存在
一行,当且仅当每个
的WHERE
存在
a2
b2
值以形成该行。因此,
不存在
这样一个SQL
a2
加上
b2
对,当它不是有微积分
a2
b2
where
的情况下,
你希望那里不存在
a2
b2

SQL表达式

NOT EXISTS (SELECT * FROM a a1, b b2 WHERE ...)
¬(∃ a2 ∈ a ∃ b2 ∈ b [...]) 
对应于元组演算表达式

NOT EXISTS (SELECT * FROM a a1, b b2 WHERE ...)
¬(∃ a2 ∈ a ∃ b2 ∈ b [...]) 
在SQL中,子查询中有
存在
一行,当且仅当每个
的WHERE
存在
a2
b2
值以形成该行。所以
不存在
这样一个SQL
a2
b2
对,当它不是有微积分
a2
b2
的情况下,
..

你的意思是(为了你特定的微积分符号保持一致)
a1(名称)=“Tim”
?你的意思是不是(为了使您的特定微积分符号保持一致)
a1(name)=“Tim”