我无法解决这个问题.我正在为大学做一些修改练习,并希望在2天之前通过我的考试.
我尝试了一些事情(最后我会发布).请善待,这是我的第一个数据库主题,所以我的尝试对你来说似乎很愚蠢.
问题如下:哪位艺术家目前拥有最多的节目?显示艺术家的名字和姓氏及其地址.ORDER BY子句不能使用.写一个SQL语句.使用子查询.
数据库中的相关表:
Shows (ShowName, ArtistId, ShowStartDate, ShowEndDate)
Artists (ArtistId, FirstName, FamilyName, Address, PhoneNum)
Run Code Online (Sandbox Code Playgroud)
我们假设ArtistId,ShowStartDate,FirstName,FamilyName和Address不能为null.
现在,我认为我必须计算每个艺术家目前的节目数量.然后,获得拥有/拥有最多的艺术家的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));
Run Code Online (Sandbox Code Playgroud)
嗯,我知道
SELECT ArtistId, COUNT(ArtistId)
FROM Shows
WHERE ShowEndDate IS null
GROUP BY ArtistId
Run Code Online (Sandbox Code Playgroud)
给我一个表格,列出每个ArtistId被列出的次数.这很好.但是从这个结果表中,我需要获得具有最高计数的那个的ArtistId /.
这就是我迷失的地方.
任何人都可以轻松一点?
(至于我使用的DBMS:我们必须使用由大学创建和提供的DBMS.它是非常基本的SQL.比Access 2010简单).
谢谢
(如果你提供答案[谢谢你,谢谢你]你能否简要解释其背后的原因?)
好吧,我很难命名这个问题.但是很难用一个简单的标题来描述.
我有一个名为Stock的表有:Stock(BarCode,MagId,Format)
还有一张名为杂志的表格:杂志(MagId,Title,ReleaseDate)
有两种杂志格式:打印和在线
有些杂志只能在线或仅在印刷时使用.有些人都在.
我需要选择仅用于从Stock表打印的杂志的MagId.然后我需要列出他们的Title和ReleaseDate.
所以,我开始:
SELECT Title, ReleaseDate
FROM Magazines
WHERE MagId IN ( SELECT MagId
FROM Stock
WHERE Format = 'Print'
AND Format <> 'Online' );
Run Code Online (Sandbox Code Playgroud)
我没有得到预期的结果.我认为因为只选择印刷杂志的子查询是错误的.
任何人都能解释一下吗?
谢谢 :)
sql ×2