【发布时间】:2014-09-05 03:00:56
【问题描述】:
所以,我有一个大学作业,讲师选择这周生病,无法回答问题。
我们得到了一个由 4 个表格组成的棒球数据库供我们使用。表结构如下:
TABLENAME:(column1, column2...etc) PK = 主键,FK = 外键
PLAYER:(人数PK,姓名,dob,队伍FK,位置)
GAME:(num PK, gamedate, hometeam FK, awayteam FK, homecore, 客场得分)
GAMESTAT:(gamenum PK, playernum FK, homeruns, 三振出局)
TEAM:(代码PK、名称、城镇、地名)
这个问题的目的是获得体育场的名称(球队表中的场地)、该场地的本垒打总和、三振出局总和,然后是这两个值的总和指定日期范围。
我的查询和问题如下:
SELECT
t.ground AS GROUNDPLAYED,
SUM(gs.homeruns) as TOTALHOMERUNS,
SUM(gs.strikeouts) AS TOTALSTRIKEOUTS,
SUM(gs.homeruns + gs.strikeouts) AS COMBINEDTOTAL
FROM team t
LEFT OUTER JOIN game g ON g.hometeam = t.code
LEFT OUTER JOIN gamestat gs ON g.num = gs.gamenum
WHERE g.gamedate BETWEEN '7-AUG-2014' AND '13-AUG-2014'
GROUP BY t.ground;
我的问题在于我得到了正确的游戏值,但无论使用 LEFT OUTER JOIN,我都没有列出所有体育场。我确信这与我必须从 GAME 表加入主队这一事实有关,它只能基于此选择主体育场。
您能提供的任何帮助将不胜感激。
【问题讨论】:
-
将您的 WHERE 子句移至 ON 子句以连接到 gamestat。