Возникли проблемы с несколькими таблицами JOIN и WHERE AND - PullRequest
0 голосов
/ 26 февраля 2019

У меня все хорошо в классе SQL, но по какой-то причине у меня все еще возникают проблемы с пониманием того, как использовать JOIN с WHERE и AND.

Мой вопрос, по которому мне нужна помощь: Написатьоператор SELECT, который отображает два столбца - идентификатор подающего, имя, фамилию и необработанный счет.Вы должны использовать соединение таблиц.Включите боулеров, у которых на имперских переулках был грубый счет 175 или выше.Используйте правильные заголовки столбцов.Сортировка результатов по необработанному счету в порядке убывания.

Мой код:

SELECT bowlerid || ' ' || b.bowlerfirstname || ' ' || b.bowlerlastname "Bowler",
      bs.rawscore "Raw Score"
  FROM bowlers b JOIN bowler_scores bs USING (bowlerid)
      JOIN tourney_matches tm USING (matchid)
      JOIN tournaments USING (tourneyid)
  WHERE bs.rawscore >= 175
    AND tourneylocation = 'Imperial Lanes'
  ORDER BY "Raw Score" DESC;

Я не уверен, правильно ли я присоединяюсь к таблицам, поскольку мои результаты неверны.

Таблицы - Столбцы

bowler_scores - matchid, gamenumber, bowlerid, rawscore

bowlers -bowlerid, bowlerlastname, bowlerfirstname, teamid

match_games - matchid, gamenumber, winnerteamid

турниров - tourneyid, tourneydate, местоположение турнира

tourney_matches - matchid, tourneyid

Я пропустил некоторые столбцы, так как они не нужны для кода.

Я добавил действительный код базы данных в ссылках 3 и 4.

Это то, что я должен получить

Что я получаю

Код данных

Структурный код

1 Ответ

0 голосов
/ 27 февраля 2019

Кажется, что тот, кто сделал исходный пример, опубликовал неверный результат, поэтому я думал, что мой вывод был неверным.После перекрестной проверки фактических данных я пришел к выводу, что мой код правильный.

SELECT bowlerid || ' ' || bowlerfirstname || ' ' || bowlerlastname "Bowler",
    rawscore "Raw Score"
  FROM tournaments JOIN tourney_matches USING (tourneyid)
    JOIN bowler_scores USING (matchid)
    JOIN bowlers USING (bowlerid)
  WHERE rawscore >= 175    
    AND tourneylocation = 'Imperial Lanes'
  ORDER BY "Raw Score" DESC;
...