一个查询的两个表连接 - 令人困惑的结果

时间:2016-10-24 22:11:18

标签: mysql sql

我尝试在查询中执行两个单独的内部表连接,以返回两个表中的值。

    SELECT pname, avg(salary)
    FROM project p INNER JOIN department d on p.dnum = d.dnumber
    INNER JOIN employee e ON e.dno = d.dnumber;

我在结果集中得到一行... pname = null,avg(salary)= null。 结果集应包含11行,因为架构中有11个项目。

有人能指出我正确的方向吗?

谢谢

3 个答案:

答案 0 :(得分:2)

您错过了onConfigurationChanged

group by

在大多数数据库中,您的版本会因语法错误而失败。如果您使用SELECT pname, avg(salary) FROM project p INNER JOIN department d on p.dnum = d.dnumber INNER JOIN employee e ON e.dno = d.dnumber GROUP BY pname; 模式,MySQL仅强制执行A​​NSI标准(请参阅here)。

答案 1 :(得分:0)

使用左外连接而不是内连接 或者你能告诉我你的数据表

答案 2 :(得分:0)

您的查询中是否需要department表?

以下查询是否会返回您需要汇总的所有数据?

SELECT pname, salary
  FROM ( SELECT salary, dno AS dnum FROM employee ) e
       NATURAL JOIN project;

如果是,那么这可能是您需要的摘要:

SELECT pname, AVG( salary ) AS average_salary
  FROM ( SELECT salary, dno AS dnum FROM employee ) e
       NATURAL JOIN project
 GROUP 
    BY pname;