计算独特书籍的存储过程

时间:2013-04-19 11:47:45

标签: sql stored-procedures

我正在使用SQL Server 2012并希望计算所有独特的图书实体的数量(因此,如果一本书有3个链接(相同的书但有其他名称/字段),它将只计算一次)。{ {0}}

让我们假设,下一个来源:

  

预订:{Id:1,说明:'预订1'}; {2,'B00k 1'}; {3,'Book1'}; {4,'第2册'}; {5,'B00k 2'}; {6,'第3册'}

     

链接:{Id:1,ParentBook: 1 ,LinkedBook: 2 }; {2,的 2,1 }; {3,的 2,3 }; {4,的 3,2 }; {5,的 4,5 }; {6,的 5,4 }

Script

我希望在结果中看到: 3 (这是一些独特的书籍,其中2个是Id:1和Id:4,其中包含指向其他书籍的链接,以及1个无链接ID: 6)

如何使用存储过程只返回一个数字?

1 个答案:

答案 0 :(得分:0)

我认为你需要在这里稍微改变你的逻辑,而不是将所有父母书籍链接到链接的书籍,然后将书籍链接回父书,只需选择一次父书,然后将它们链接起来:

Link: {Id:1,ParentBook:1,LinkedBook:2}; {2,1,3}; {3,1,1}; {4,4,5}; {5,4,4}; {6,6,6}

但你必须将它与自己联系起来。查询以找出不同的。

我创建了一个示例here on sqlfiddle,检查这是否是您想要的 这是我做的:

SELECT COUNT(DISTINCT(l.ParentBook)) as total_books
FROM BOOK b, LINKED l
WHERE b.Id = l.ParentBook

它将计算不同的父级书籍。

相关问题