Sql server 从ms sql server中的表中选择包含相关项计数的列
我有表格结构,相册按类别排列,所以我们有顶级、第二级相册、照片和第三级的类别 我需要显示AlbumCategories的详细信息,以及该类别下的专辑名称和数量。如果我希望基于下面的虚拟数据得到以下结果,我如何查询Sql server 从ms sql server中的表中选择包含相关项计数的列,sql-server,sql-server-2008,Sql Server,Sql Server 2008,我有表格结构,相册按类别排列,所以我们有顶级、第二级相册、照片和第三级的类别 我需要显示AlbumCategories的详细信息,以及该类别下的专辑名称和数量。如果我希望基于下面的虚拟数据得到以下结果,我如何查询 Sports(2) Education(3) TABLE AlbumCategories ACID Name 1 Sports 2 Education TABLE albums AID ACID Name 1 1
Sports(2)
Education(3)
TABLE AlbumCategories
ACID Name
1 Sports
2 Education
TABLE albums
AID ACID Name
1 1 Footbal season 2015
2 1 Footbal season 2016
3 2 Album one
4 2 Album Two
5 3 Album Three
TABLE albumsPhotos
PID AID Image
只需一个简单的
JOIN
和groupby
:
SELECT AC.ACID
, MAX(AC.Name) as Name
, COUNT(*) as Frequency FROM Album A
INNER JOIN AlbumCategories AC ON A.ACID = AC.ACID
GROUP BY AC.ACID
要获取所有类别(无论是否有相册),请使用此查询:
SELECT AC.ACID
, MAX(AC.Name) as Name
, COUNT(*) as Frequency FROM AlbumCategories AC
LEFT OUTER JOIN Album A ON A.ACID = AC.ACID
GROUP BY AC.ACID
选择。。计数桌子联接表。。分组依据
。education
计数不应该是2
提示:JOIN
<代码>分组依据。为什么会有(3)对于您的示例中的教育?不确定这个问题是如何获得选票的。您的查询中不应该用AlbumCategories
代替Sport
,因为没有运动表通过查询获取此库中的所有记录我只获取包含相册的记录,而不是所有记录categories@Learning,已使用处理该问题的替代方案进行更新。