首先,我将提供我拥有的结构和数据,然后我将提供我尝试过的查询。我不太擅长“JOINS (RIGHT OR LEFT) 或 UNION 查询,我一直在尝试研究它们,但没有太多帮助。
我有三张桌子.. 名册,团队,游戏。表格描述如下图所示。
这些表中的数据附在...
我想要完成的是创建输出或在将行添加到游戏、名册、团队时保持更新的视图。我附上了一个创建的 EXCEL 表格,其中包含组成的数据,以显示我正在寻找的内容。
我一直在尝试运行的查询,我没有计算球员没有参加但可能参加的球队,所以它需要计算他们的百分比......该行不存在。
SELECT r.roster_id, COUNT(*) "TOTAL ELIGIBLE GAMES"
FROM games g, teams w, roster r
WHERE r.roster_id = g.roster_id
AND t.team_id = g.team_id
AND g.game_date>= r.joined_team
GROUP BY r.roster_id;
这个输出看起来像这样......
但我试图让这样的查询运行并提供输出......
SELECT r.roster_id, COUNT(*) "TOTAL ELIGIBLE GAMES"
FROM games g, teams t, roster r
WHERE r.roster_id = g.roster_id
AND t.team_id = g.team_id
AND g.game_date >= r.joined
GROUP BY r.roster_id;
(JOIN, UNION, RIGHT JOIN, LEFT JOIN) -- NOT SURE WHAT TO USE HERE.
SELECT COUNT(*) "ACTUAL GAMES PLAYED"
FROM games g, teams t, roster r
WHERE NOT EXISTS r.roster_id IN (SELECT roster_id FROM roster)
OR EXISTS r.roster_id IN (SELECT roster_id FROM roster)
AND t.team_id = g.team_id
AND g.game_date >= r.joined
GROUP BY r.roster_id;
我不知道如何将计数计入总游戏数,其中应该存在一行,基于joined_team 日期以及 game_date 何时......所以 game_date >=joined_team。
我希望我解释得足够好......这是我正在从事的个人项目......
任何帮助或建议、提示、示例将不胜感激......我不是在寻找直接的答案,因为这不是我们学习的方式......我看到很多人想要在银盘上分发答案。 .. 如果您有任何问题,或需要更多信息,请告诉我。
谢谢你,丹尼尔