1

我不知道如何制作这个 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;

并且有工作,但我不知道下一步该去哪里。

4

2 回答 2

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
于 2013-04-11T03:07:30.230 回答
1

我可能遗漏了一些东西,但我没有看到你的歌曲表与专辑的直接关系......

我首先将 link_interpret_song 表加入到歌曲表中,然后计算不同专辑的数量。但是,我没有在歌曲表的字段列表中看到“No_Album”列。我只能猜测它与特定专辑相关联。我确实看到了媒体,但对我来说,这就像一种媒体类型(数字、下载、乙烯基、CD)与专辑表中明显的实际 ID 密钥。

也就是说,我认为 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() 与 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
于 2013-04-11T03:14:35.387 回答