我正在做SQLzoo音乐教程问题4,这可以在这里找到(Tutorial)。我不确定我应该使用left join还是inner join
问题是:“每个album都显示title和track的总数。”
我发现这个问题的“正确”解决办法是
select A.title, count(T.song)
from album as A inner join track as T
on A.asin = T.album
group by A.title但我觉得基于这个问题,解决办法应该是
select A.title, count(T.song)
from album as A left join track as T
on A.asin = T.album
group by A.title因为,在album表中可能有(实际上在这个问题中也有)相册标题,在track表中没有对应。和使用
select A.title, count(T.song)
from album as A left join track as T
on A.asin = T.album
group by A.title
having count(T.song) = 0我发现
title count(T.song)
A Love Supreme 0
The Hits 0这两张相册在Track表中没有对应关系。
发布于 2018-03-07 09:27:54
你是对的。以下是asin与专辑的标题,这些专辑的asin不是一张专辑:
select A.asin, A.title
from album A left join track T
on A.asin = T.album
where T.album is null
asin title
B000003N7A Love Supreme
B000008O4G The Hitshttps://stackoverflow.com/questions/49134826
复制相似问题