我很难解决这个问题。我正在为大学做一些复习练习,并希望在两天内考试前了解这一点。
我尝试了一些事情(我将在最后发布)。请善待,这是我的第一个数据库主题,所以我的尝试对你来说可能看起来很愚蠢。
问题如下:目前哪个艺术家/有/有最多的节目?显示艺术家的名字和姓氏及其地址。不能使用 ORDER BY 子句。编写单个 SQL 语句。使用子查询。
数据库中的相关表:
Shows (ShowName, ArtistId, ShowStartDate, ShowEndDate)
Artists (ArtistId, FirstName, FamilyName, Address, PhoneNum)
我们假设 ArtistId、ShowStartDate、FirstName、FamilyName 和 Address 不能为空。
现在,我认为我必须计算每个艺术家目前的演出数量。然后,获取拥有最多的艺术家的 ArtistId。使用 ArtistId 检索艺术家详细信息(姓名和地址)。
我做到了这一点(这是非常错误的):
SELECT FirstName, FamilyName, Address
FROM Artists
WHERE ArtistId = (SELECT ArtistId
FROM Shows
WHERE ArtistId = (SELECT MAX(Counted)
FROM (SELECT ArtistId, COUNT(ArtistId) AS Counted
FROM Shows
WHERE ShowEndDate IS null
GROUP BY ArtistId)
GROUP BY ArtistId));
嗯,我知道
SELECT ArtistId, COUNT(ArtistId)
FROM Shows
WHERE ShowEndDate IS null
GROUP BY ArtistId
给我一个表格,其中列出了每个 ArtistId 被列出的次数。哪个好。但是从这个结果表中,我需要获取具有最高计数的 ArtistId/。
这就是我迷路的地方。
任何人都可以解释一下吗?
(至于我使用的是哪个 DBMS:我们必须使用由大学创建和提供的一个。它是非常基本的 SQL。比 Access 2010 更简单)。
谢谢
(如果您提供答案[谢谢谢谢],您能否还简要解释一下其背后的原因?)