Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/330.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
Java SQL计数显示的不仅仅是计数?_Java_Sql - Fatal编程技术网

Java SQL计数显示的不仅仅是计数?

Java SQL计数显示的不仅仅是计数?,java,sql,Java,Sql,我有很多板球碗的数据库。 架构是: Player(PlayerID, Initials, Surname) - Stores all the players Bowl(BowlID, Striker, Non-Striker, Bowler, Runs) - Stores info for every ball Team(TeamID, name) - Stores all the teams SquadPlayer(TeamID, PlayerID, MatchID) - Stores

我有很多板球碗的数据库。 架构是:

Player(PlayerID, Initials, Surname)
 - Stores all the players
Bowl(BowlID, Striker, Non-Striker, Bowler, Runs)
 - Stores info for every ball
Team(TeamID, name)
 - Stores all the teams
SquadPlayer(TeamID, PlayerID, MatchID)
 - Stores a record of who was playing at each match and for which team
我想找出英格兰队每个球员的得分是多少。(我使用的是openoffice风格的HSQL)

这是我正在尝试运行的SQL,但它无法运行。如果我省略了SELECT部分的前两列(Player.Initials和Player.姓氏),它可以很好地工作,但它不是很有用,因为我无法计算出谁得了所有的6分

我通过java运行它,我得到一个异常:

java.sql.SQLException: Not in aggregate function or group by clause

那么为什么这不起作用呢?如何在旁边显示名称?

选择子句中的任何字段都需要使用聚合函数,或者包含在
分组依据
子句中,这就是为什么会出现此错误。因此,您必须在
GROUPBY
子句中包含
“Player”“Initials”“Player”“姓氏”
,或者对它们使用聚合函数。比如:

SELECT "Player"."Initials", "Player"."Surname", 
      COUNT ("Bowl"."Striker") AS "No. Sixes"
FROM "Bowl", "Player", "Player" AS "Bowler"
WHERE "Bowl"."Striker" = "Player"."PlayerID"
AND "Bowl"."Bowler" = "Bowler"."PlayerID"
AND "Bowl"."Striker" IN (
    SELECT DISTINCT "Player"."PlayerID" 
    FROM "Player", "Team", "SquadPlayer"
    WHERE "Player"."PlayerID" = "SquadPlayer"."PlayerID" 
    AND "Team"."TeamID" = "SquadPlayer"."TeamID" 
    AND "Team"."Name" = 'England' )
AND "Bowl"."Runs" = '6'
GROUP BY "Bowl"."Striker", "Player"."Initials", "Player"."Surname"

SELECT
子句中的任何字段都需要使用聚合函数,或者包含在
GROUP BY
子句中,这就是您出现此错误的原因。因此,您必须在
GROUPBY
子句中包含
“Player”“Initials”“Player”“姓氏”
,或者对它们使用聚合函数。比如:

SELECT "Player"."Initials", "Player"."Surname", 
      COUNT ("Bowl"."Striker") AS "No. Sixes"
FROM "Bowl", "Player", "Player" AS "Bowler"
WHERE "Bowl"."Striker" = "Player"."PlayerID"
AND "Bowl"."Bowler" = "Bowler"."PlayerID"
AND "Bowl"."Striker" IN (
    SELECT DISTINCT "Player"."PlayerID" 
    FROM "Player", "Team", "SquadPlayer"
    WHERE "Player"."PlayerID" = "SquadPlayer"."PlayerID" 
    AND "Team"."TeamID" = "SquadPlayer"."TeamID" 
    AND "Team"."Name" = 'England' )
AND "Bowl"."Runs" = '6'
GROUP BY "Bowl"."Striker", "Player"."Initials", "Player"."Surname"

您的分组依据应该是未聚合的列

SELECT "Player"."Initials", "Player"."Surname", COUNT ("Bowl"."Striker") AS "No. Sixes"
FROM "Bowl", "Player", "Player" AS "Bowler"
WHERE "Bowl"."Striker" = "Player"."PlayerID"
AND "Bowl"."Bowler" = "Bowler"."PlayerID"
AND "Bowl"."Striker" IN (
    SELECT DISTINCT "Player"."PlayerID" 
    FROM "Player", "Team", "SquadPlayer"
    WHERE "Player"."PlayerID" = "SquadPlayer"."PlayerID" 
    AND "Team"."TeamID" = "SquadPlayer"."TeamID" 
    AND "Team"."Name" = 'England' )
AND "Bowl"."Runs" = '6'
GROUP BY "Player"."Initials", "Player"."Surname"

您的分组依据应该是未聚合的列

SELECT "Player"."Initials", "Player"."Surname", COUNT ("Bowl"."Striker") AS "No. Sixes"
FROM "Bowl", "Player", "Player" AS "Bowler"
WHERE "Bowl"."Striker" = "Player"."PlayerID"
AND "Bowl"."Bowler" = "Bowler"."PlayerID"
AND "Bowl"."Striker" IN (
    SELECT DISTINCT "Player"."PlayerID" 
    FROM "Player", "Team", "SquadPlayer"
    WHERE "Player"."PlayerID" = "SquadPlayer"."PlayerID" 
    AND "Team"."TeamID" = "SquadPlayer"."TeamID" 
    AND "Team"."Name" = 'England' )
AND "Bowl"."Runs" = '6'
GROUP BY "Player"."Initials", "Player"."Surname"
当select子句中有count(或任何聚合函数)时,select子句中所有未聚合的列也必须出现在group by子句中

使您的分组依据子句如下所示:

GROUP BY "Bowl"."Striker", "Player"."Initials", "Player"."Surname"
当您的select子句中有一个count(或任何聚合函数)时,select子句中所有未聚合的列也必须出现在group by子句中

使您的分组依据子句如下所示:

GROUP BY "Bowl"."Striker", "Player"."Initials", "Player"."Surname"

如果在查询中使用count、sum等(聚合函数),则在聚合中检索到的所有不在聚合中的列都必须在group by子句中

将您的分组按子句更改为

GROUP BY  "Player"."Initials", "Player"."Surname"

若在查询中使用count、sum等(聚合函数),则检索到的不在聚合中的所有列都必须在GROUPBY子句中

将您的分组按子句更改为

GROUP BY  "Player"."Initials", "Player"."Surname"