我正在做SQLzoo音乐教程问题4,可在此处找到(https://sqlzoo.net/wiki/Music_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
表格中没有对应关系。
答案 0 :(得分:0)
你是对的。这是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 Hits