gpt4 book ai didi

sql - SQL 的关系演算

转载 作者:行者123 更新时间:2023-12-02 04:45:06 28 4
gpt4 key购买 nike

我有以下关系演算,我正试图将其转换为 SQL。

{ a | ∃b X(a, b) ∧ ¬∃c ( Y(c) ∧ ¬X(a, c)) }

我知道这一定是沿着这条线:

SELECT X1.a
FROM X X1
WHERE NOT EXISTS
(
SELECT *
FROM X, Y
WHERE ... AND NOT ...
)

根据我的理解,它会查看表 X 并针对其中的每条记录检查 Y 中的所有记录,以便 Y 中的每条记录都必须在 X 中具有相同的 a 属性值作为我们正在检查。

但我无法确切地弄清楚如何将其转换为 SQL。

编辑:

为了用通俗易懂的语言更好地理解这一点:设 X 表示一个 reservations 表,其中 apersonIDb项目。设 Yitems 表的某个子集的表,c 属性是 item

据我了解,我们正在研究根据以下条件返回 personID 的情况:

对于 reservations 中的每条记录,检查此人是否还保留了 Y 中的所有其他 item,如果是,则返回他。

我可能是错的,但这是我基于此的理解。

最佳答案

∃b X(a, b)

可以是这个

SELECT X.a
FROM X
WHERE X.b IS NOT NULL -- mean ( a, b ) are in X

或者扩展成类似的东西

SELECT X.a 
FROM X
JOIN Q
ON X.b = Q.b

¬∃c ( Y(c) ∧ ¬X(a, c)) }

同样的想法

SELECT X.a
FROM X
WHERE c IS NULL -- mean ¬X(a, c)

所以

NOT EXISTS ( SELECT 1
FROM Y
JOIN X
ON X.c = Y.c)

关于sql - SQL 的关系演算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33785099/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com