Я пытаюсь преобразовать sql-запрос в реляционное исчисление кортежа, но есть NOT EXIST
, который заставляет меня застревать.Преобразование 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 ...
это где я застрял. Как я могу показать, что это NOT EXISTS
от a2
и b2
? Если я напишу ¬∃a2 ∈ a ¬∃b2 ∈ b
, тогда это будет дважды вложенный sql-запрос, а не тот, который указан выше.
Вы не имеете в виду (для того, чтобы ваша конкретная нотация была последовательной) 'a1 (name) =« Tim »'? – philipxy