Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 一个查询有两个表联接--结果混乱_Mysql_Sql - Fatal编程技术网

Mysql 一个查询有两个表联接--结果混乱

Mysql 一个查询有两个表联接--结果混乱,mysql,sql,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,平均工资=null。 结果集应包含11行,因为架构中有11个项目 有人能给我指出正确的方向吗 谢谢您错过了

我试图在查询中执行两个独立的内部表联接,以从两个表返回值

    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,平均工资=null。 结果集应包含11行,因为架构中有11个项目

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


谢谢

您错过了分组:

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仅在您使用
仅完整分组方式时才强制执行ANSI标准(请参阅)。

您缺少
分组方式:

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仅在您使用
仅满组模式时才强制执行ANSI标准(请参见)。

使用左外连接而不是内连接
或者你能给我看一下你的数据表吗

用左外联接代替内联接
或者你能给我看一下你的数据表吗?你的查询中需要部门表吗

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

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;

查询中是否需要
部门

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

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;

通过pname添加组;子句似乎返回0行。@Matthew.learn。这将是另一个问题——您的连接条件似乎不正确。您可能需要用示例数据和期望的结果问另一个问题。@onedaywhen。我想你误解了这个评论。这是关于OP最初的查询。我澄清了。通过pname添加组;子句似乎返回0行。@Matthew.learn。这将是另一个问题——您的连接条件似乎不正确。您可能需要用示例数据和期望的结果问另一个问题。@onedaywhen。我想你误解了这个评论。这是关于OP最初的查询。我澄清了。