【问题标题】:COUNT Changes with Join on another Table MySQLCOUNT 更改与另一个表 MySQL 上的连接
【发布时间】:2017-11-15 13:29:53
【问题描述】:

我有以下数据库结构

Table Employee:

Name     ENr    
Name 1   1
Name 2   2
Name 3   3
...

Table Travel:

Employee  Costs
Name 1    8000
Name 1    56000
Name 2    800

等等。

现在我要选择员工姓名、出差次数和平均成本,以及 ENr

到目前为止,这就是我的 SQL 选择:

SELECT   employee,  COUNT(travel.employee), AVG(costs) FROM  travel  GROUP BY employee

但是,当我尝试连接员工表以添加 ENr 时,我的计数完全错误。 我尝试连接简单:

SELECT ENr, Employee.. FROM travel, employee

还有一个 INNER JOIN。

希望有人可以帮助我:)

【问题讨论】:

  • @B001 - MySQL 是数据库,SQL 是标准。停止混合
  • 停止战斗,这个可怜的 Nicole W. 正在努力解决她的问题,以免被通知骚扰...
  • 抱歉打错了,我不会再标记SQL了,我是新来的:)
  • @NicoleW。您可以根据需要使用 sql,它不会以任何方式打扰它是一种规范。最重要的是通知数据库,你做了什么,所以你没有错^^
  • @NicoleW。如果您的查询仅包含 ansi 标准 sql(您的包含),则应使用 sql 进行标记。很多在生活中从未使用过 mysql 的人仍然可以回答您的问题,因为它只使用标准 sql,但是如果他们在 [sql] 上搜索,如果没有标记,他们将永远找不到您的问题

标签: mysql sql database count


【解决方案1】:

永远不要FROM 子句中使用逗号。 始终使用正确、明确的JOIN 语法。

你需要JOIN条件:

SELECT e.name, e.eNR, COUNT(*), AVG(t.costs)
FROM employee e JOIN
     travel t
     ON e.name = t.name
GROUP BY e.name, e.eNR;

其他 cmets:

  • 如果查询中有多个表,请使用表别名和限定列名。
  • GROUP BY 中包含所有非聚合列。
  • name 是一个糟糕的外键。通常,您希望外键是唯一的(名称可能不是唯一的)。而且数字对于索引目的更有效。

【讨论】:

  • 非常感谢!你帮了我很多
猜你喜欢
  • 2011-06-18
  • 2017-05-23
  • 1970-01-01
  • 2016-02-01
  • 2020-06-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-05-13
相关资源
最近更新 更多