我有一个具有以下布局的数据库:
employees (person_name, street, city)
works (person_name, company_name, salary)
companies (company_name, city)
manages (person_name, manager_name)
我需要提出一个查询,让我找到所有员工,他们的经理人数比他们的经理多。我知道这涉及到员工,工作和管理表之间的一些非常激烈的联接,而我无法得到一个可行的。有人可以帮助我,解释如何获得解决方案吗?
答案 0 :(得分:2)
首先,名字不是一把好钥匙。
答案的关键是你可以多次加入一张桌子(记得别名你的桌子,以便你可以区分你想要参考的桌子。)
无需为您编写查询,这意味着您应该选择员工,通过Works和公司加入(这可以为您提供员工薪水)。这应该通过Manages连接到管理员,以获取您的经理详细信息。这个版本的员工可以第二次加入Works以获得经理薪水。然后只比较WHERE子句中的工资。
答案 1 :(得分:1)
SELECT w.person_name
FROM works w
INNER JOIN manages m
ON m.person_name = w.person_name
INNER JOIN works wManager
ON wManager.person_name = m.manager_name
WHERE w.salary > wManager.salary