SQL连接多个表的查询

时间:2011-06-21 08:21:30

标签: mysql sql

我有一个具有以下布局的数据库:

employees (person_name, street, city) 
works (person_name, company_name, salary) 
companies (company_name, city) 
manages (person_name, manager_name)

我需要提出一个查询,让我找到所有员工,他们的经理人数比他们的经理多。我知道这涉及到员工,工作和管理表之间的一些非常激烈的联接,而我无法得到一个可行的。有人可以帮助我,解释如何获得解决方案吗?

2 个答案:

答案 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