-1

我正在使用SQL Server 2012并想要计算所有唯一的 Book 实体的数量(因此,如果一本书有 3 个链接(同一本书但具有其他名称/字段),它将只计算一次)。表结构

假设,下一个来源:

:{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 }

脚本

我想在结果中看到:3(这是许多独特的书籍,其中 2 是 Id:1 和 Id:4 与其他书籍有链接,1 没有链接 Id:6)

我如何通过使用存储过程只返回一个数字来做到这一点?

4

1 回答 1

0

我认为您需要在这里稍微改变一下逻辑,而不是将所有父书链接到链接书,然后将书链接回父书,只需选择父书一次,然后像这样链接它们:

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

但是您必须将其链接到自身。为查询找出不同的。

在 sqlfiddle 上创建了一个示例,检查这是否是您想要的。
这是我所做的:

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

它将计算不同的父书。

于 2013-04-19T12:51:57.523 回答