我无法弄清楚如何制作这个sql select语句......这是我的表格:
我打开了有关请求的表
基本上I want to select the number of albums for each interpret.
我只是想不出来......我目前正在考虑我需要在第一张专辑中选择:
select interpret.no_interpret, count(*)
from album
.
.
.
group by interpret.no_interpret;
并且有工作,但我不知道下一步该去哪里。
答案 0 :(得分:1)
这个问题含糊不清,因为没有明确表明这些表是如何相关的。假设有关这些关系的假设,您的查询可能会采用类似于以下形式的内容:
SELECT COUNT(distinct a.no_album) from album a, interpret i, song s
where i.no_song=s.no_song
and a.no_album=s.no_album GROUP BY i.no_interpret
答案 1 :(得分:1)
我可能会遗漏一些东西,但我没有看到你的歌曲表到专辑的直接关系......
我首先要将link_interpret_song表连接到歌曲表并获取不同专辑的数量。但是,我没有在歌曲表的字段列表中看到似乎是“No_Album”列。我只能猜测它与特定专辑相关联。我确实看过媒体,但对我来说,这就像是一种媒体类型(数字,下载,黑胶唱片,CD)与专辑表中明显的实际ID Key。
那就是说,我在想SONG表中有一个“No_Album”专栏。
select
LIS.No_Interpret,
COUNT( DISTINCT S.No_Album )
from
Link_Interpret_Song LIS
JOIN Song S
on LIS.No_Song = S.No_Song
group by
LIS.No_Interpret;
现在,如果您想要解释详细信息,请采用上述结果并将其加入到解释表中。我已经完成了不同的专辑数量和歌曲总数,这只是count()vs count(distinct)上下文的一个例子......比如
select
PreCounts.No_Interpret,
PreCounts.DistinctAlbums,
PreCounts.ActualSongs,
I.Name_Interpret,
I.First_Name,
I.Stage_Name
from
( select
LIS.No_Interpret,
COUNT( DISTINCT S.No_Album ) as DistinctAlbums,
COUNT(*) as ActualSongs
from
Link_Interpret_Song LIS
JOIN Song S
on LIS.No_Song = S.No_Song
group by
LIS.No_Interpret ) as PreCounts
JOIN Interpret I
ON PreCounts.No_Interpret = I.No_Interpret