【发布时间】:2015-12-09 23:49:25
【问题描述】:
有没有办法在不使用 Count 和 Group By 的情况下判断一个元素是否在一列中至少出现 3 次?
编辑:答案预计在 SQL(mysql 或 oracle11g)中,其中 仅使用 SELECT、FROM、WHERE 和 JOINS。当然,所有的逻辑运算符和量词都是 RELATIONAL CALCULUS WITH TUPLES 根本没有工具。
元组示例:
{ t : {名称} | ∃ s : {姓名, 工资} ( Employee(s) ∧ s.wage = 50.000 ∧ t.name = s.name ) }
这里,元组关系演算的局限性很明显。
没有 CTE、没有分组依据、没有行工具、没有不同、没有计数、没有视图、没有创建、没有插入、没有改变。没有那些很棒的 SQL 工具。
我不想使用 Count 和 Group By 的原因是因为我将把它带到 Relational Calculus with Tuples,它不允许使用这些工具。
举个例子:
假设有一个表 ORDER (Id_article, Id_Provider),其中两个 ID 都是外键。
查询:获取所有至少订购3次的文章。
让表 ORDER 为:
Id_Article Id_Provider
1 A
1 B
1 B
2 C
2 C
3 A
查询的结果应该只有元素1,因为在Id_Article中是3次。
【问题讨论】:
-
什么是
Relational Calculus?以及为什么要标记mysql和oracle11?选择一个。 -
因为我可以使用这两个选项中的任何一个。
-
关系微积分是 sw 还是 db?因为可能 oracle 有其他你不能使用的工具:(
-
如果您在记录上有一个唯一键,您可以使用两个 EXIST 子句来检查是否存在具有相同 Id_Article 的另外两个记录。
-
是的,我就是这么想的。不幸的是,这是我正在使用的模型提出的方式。只是带有其他非唯一列的外键,为了简单起见,我忽略了这些列。
标签: mysql sql database oracle11g