我在SQL课上一直表现不错,但是无论出于什么原因,我仍然很难理解如何将JOIN与WHERE和AND结合使用。
我需要帮助的问题是: 编写一个显示两列的SELECT语句-礼帽ID,名字,姓氏和原始分数。您必须使用表联接。包括在帝国巷的原始得分为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 -比赛编号,游戏编号,bowlerid和rawscore
保龄球手-圆顶硬礼帽,圆顶硬礼帽,圆顶硬礼帽,teamid
match_games -比赛ID,游戏编号,winningteamid
比赛-比赛记录,比赛记录日期,比赛记录定位
tourney_matches -比赛编号,比赛编号
我省略了一些列,因为代码不需要它们。
我在链接3和4中添加了实际的数据库代码。
答案 0 :(得分:0)
似乎谁做的原始示例都张贴了不正确的结果,这就是为什么我认为我的输出不正确。在对实际数据进行交叉检查之后,我得出的结论是我的代码是正确的。
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;