我有一個很多板球碗的數據庫。 模式是:SQL COUNT顯示的不僅僅是計數嗎?
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)
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"
這是我試圖運行的SQL,但它不起作用。如果我省略SELECT部分(Player.Initials和Player.Surname)中的前兩列,它可以正常工作,但它不是非常有用,因爲我無法計算出世界衛生組織的所有六分數。
我跑這一切通過Java,我得到異常:
java.sql.SQLException: Not in aggregate function or group by clause
那麼,爲什麼不這項工作?我如何在旁邊顯示名字?