Оператор SELECT дублирует счет для каждой записи? - PullRequest
0 голосов
/ 10 декабря 2018

Я пытаюсь написать оператор 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, поэтому любые ваши дополнительные советы или указания приветствуются.

1 Ответ

0 голосов
/ 10 декабря 2018

Спасибо, xQbert и Гордону Линоффу!

Теперь оно правильно отображается!

Вот обновленный фрагмент кода:

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;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...