0

我正在尝试编写一个 SELECT 语句,该语句将显示原始得分超过 190 的投球手,在一场他们输掉的比赛中。

这段代码检索到 960 个结果,每个人的分数要么是 192,要么是 193,每个人都显示在每个团队中,每个团队在同一场比赛中多次参加比赛。

SELECT bs.MATCHID "Match", t.TEAMNAME "Team Name", 
   b.BOWLERFIRSTNAME || ' ' || b.BOWLERLASTNAME "Bowler Name", 
   bs.GAMENUMBER "Game Number", bs.RAWSCORE "Raw Score"
FROM BOWLER_SCORES bs, TEAMS t, BOWLERS b, MATCH_GAMES m
WHERE bs.MATCHID = m.MATCHID
AND bs.GAMENUMBER = m.GAMENUMBER
AND bs.WONGAME = 'N'
AND bs.RAWSCORE >= 190;

你可以看到这显然是错误的,而且我在代码中做错了,从根本上说。我只是不确定它是什么,以及我应该做些什么不同的事情。

我对 SQL 非常陌生,因此非常感谢您提供的任何其他建议或指示。

4

1 回答 1

2

非常感谢 xQbert 和 Gordon Linoff!

我现在可以正确显示了!

这是更新的代码片段:

SELECT DISTINCT MATCHID "Match", TEAMNAME "Team Name", 
   BOWLERFIRSTNAME || ' ' || BOWLERLASTNAME "Bowler Name", 
   bs.GAMENUMBER "Game Number", bs.RAWSCORE "Raw Score"
FROM BOWLERS
   JOIN TEAMS USING (TEAMID)
   JOIN BOWLER_SCORES bs USING (BOWLERID)
   JOIN MATCH_GAMES m USING (MATCHID)
WHERE bs.WONGAME = 'N'
  AND bs.RAWSCORE >= 190
ORDER BY "Match" ASC;
于 2018-12-10T19:41:47.777 回答