【问题标题】:I am trying to write a query using relational algebra我正在尝试使用关系代数编写查询
【发布时间】:2021-04-21 18:56:04
【问题描述】:
select e.id, e.name, e.dno, COUNT(w.id) AS TOTAL_PROJECTS
from employee e,
     works_on w
where e.id = w.id
group by e.id
HAVING TOTAL_PROJECTS > 3;

这些是涉及的表格:

员工(id、姓名、薪水、dno)

部门(dno、dname、Mgr_id)

项目(Pno,Pname,dno)

Works_on(id, Pno, No_of_hrs)

【问题讨论】:

  • 今日提示:始终使用现代、明确的JOIN 语法。更容易编写(没有错误),更容易阅读(和维护),如果需要更容易转换为外连接
  • 问题是什么?向我们展示一些示例表数据和预期结果 - 全部为格式化文本(不是图像)。minimal reproducible example
  • 有很多 RA(关系代数)。它们在运算符甚至关系是什么方面都不同。给你的定义和参考。例如教科书名称、版本和页码。嵌套的 RA 调用形成了一种编程语言。因此,即使您实际上并没有运行代码,也要尽可能多地提供minimal reproducible example。但是——谷歌“在线运行关系代数”。请展示你能做的部分。请参阅 How to Ask、其他 help center 链接、点击谷歌搜索“stackexchange 作业”和投票箭头鼠标悬停文本。
  • Converting aggregate operators from SQL to relational algebra 在考虑发布之前,请阅读手册和谷歌任何错误消息以及您的问题/问题/目标的许多清晰、简洁和准确的措辞,有或没有您的特定名称/字符串/数字, '网站:stackoverflow.com' & 标签;阅读许多答案。如果您发布问题,请使用一个短语作为标题。反映你的研究。 PSRe relational querying.

标签: mysql sql relational-algebra


【解决方案1】:

您在employee 或work_on 中没有id 字段

SELECT e.Empid, e.name, e.dno, COUNT(*) AS TOTAL_PROJECTS
FROM employee e JOIN
     works_on w ON e.Empid = w.Empid
GROUP BY e.Empid, e.name, e.dno
HAVING TOTAL_PROJECTS > 3;

【讨论】:

  • 他们想要关系代数而不是 SQL。尽管列错误将是相关评论。无论如何,如果这是一个答案,你不会说这段代码的意义是什么。
  • 我知道,但请尝试dbis-uibk.github.io/relax/calc/local/uibk/local/3 并尝试一下,看看“你走了多远”
  • 我不明白你的评论。你以为我是提问者吗?我已经告诉他们谷歌在线执行并展示他们可以做什么。
  • 我可能在查询中犯了一个错误,即列名不正确。我的问题是重写查询,但使用关系代数。
  • 查看我关于创建示例数据的评论并尝试一下,但有了数据有人可以帮助您
猜你喜欢
  • 2015-08-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-10-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多