【问题标题】:Relational Algebra - Finding EXACTLY two values关系代数 - 找到两个值
【发布时间】:2014-08-24 16:15:47
【问题描述】:

下面是一个表格和简单的 SQL,用于查找恰好出现在两个州的城市

Name     State
----     -----
Paris    MO
Paris    TX
Paris    VA
Austin   MA
Austin   TX
Burling  VT

结果:只有奥斯汀才有资格,因为它恰好出现在两个州

SQL

SELECT c1.Name FROM City AS c1
JOIN City AS c2 ON c1.Name = c2.Name AND c1.State <> c2.State
WHERE NOT EXISTS (
    SELECT 1 FROM City AS c3
    WHERE c1.Name = c3.Name AND c3.State NOT IN (c1.State, c2.State);

我想用关系代数表达上面的sql。我做了第一部分,它找到了至少出现在两个州的城市,但不知道如何表达 NOT EXISTS (...) 部分。我的理解是,我需要在后面的部分中进行一些关系划分。

关系代数(第一部分)

P = rho 符号重命名,J = 加入

X1 --> Pc1(City)
X2 --> Pc2(City)
X3 --> X1 J ( c1.Name = c2.Name AND c1.State <> c2.State ) X2
.....

期待帮助

【问题讨论】:

  • X4 = X3 J (... c3 ...) AND x4 IS EMPTY(is_empty必须有运算符)
  • 您在不存在的情况下的简单连接告诉您在至少 2 个州中找到的城市。沿着类似的路线进行额外的连接将为您提供至少在三个州中找到的城市。然后你只需要从第一组中减去它。
  • 关系代数不止一种。给一个你要使用的链接。
  • @wildplasser 没有 is_empty 也没有办法表达它,假设标准运算符集仍然可以表达任何查询。 (X、U、-、项目、重命名和限制只能提及参数的属性。)假设表 R 别名为 R 包含其中 R(R.x,...) 的行。然后 T WHERE EXISTS(U WHERE ...T.a...U.b...) = T(T.a,...) & 存在 U.b,... [U(U.b,...) & ...T.a.. .U.b...] = 存在 U.b,...的行 [T(T.a,...) & U(U.b,...) & ...T.a...U.b...] = 项目 T.a,... (限制...T.a...U.b...(T X U))。 (稍后 SELECT R.x AS y,... ... 给出重命名 R.x\y,... (project R.x,... (...))。)

标签: sql database relational relational-algebra relational-division


【解决方案1】:

我给你一个提示:

没有聚合函数你可以找到:

  • 在一个州出现 2 次或 2 次以上的城市
  • 在一个州出现 3 次或 3 次以上的城市

所以:

一个状态的两次可以计算为:

2 次以上 2 次以上除外 3 次以上 3 次以上。

所以你需要制作2份表格并计算2个以上州的城镇,然后制作3份并计算3个或更多州的城镇......

在进行 3 次或更多测试时,请注意此运算符 的非传递性!!!

我希望你能解决这个问题!这真的很重要!祝你好运

【讨论】:

    【解决方案2】:

    我会首先考虑 GROUP BY 和 HAVING:

    select city, count(state) 
    from city 
    group by city
    having count(state) = 2
    order by city
    

    【讨论】:

    • 其中一个要求是不要使用课程第二部分中的聚合函数:(
    • 你可以看到它是多么的简单。试试看它是否有效。然后担心你的分配要求。立即学习;以后再学习。
    • 我知道。 . .改用窗口函数。 ;)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-04-08
    • 2011-07-26
    • 1970-01-01
    • 2017-07-25
    • 2013-04-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多