从SQL中的多个表获取记录计数

从SQL中的多个表获取记录计数,sql,sql-server,database,sql-server-2008,Sql,Sql Server,Database,Sql Server 2008,我有3张桌子,盒子,文件,批次。 每个框包含多个文档,每个文档有多个批次。 我想选择框中的文档计数,其中文档中至少有一个批次的值为IsDeleted=0 假设文档有10个批次,如果至少有一个批次的值isdeleted=0 我们将对其进行计数,否则如果所有批次的isdeleted=1,我们将不进行计数 如何根据上述内容选择od文件的编号 我试过了,但没用 SELECT b.ID as BOXID,d.ID as DocID, count(1) as CountDoc FROM Documen

我有3张桌子,盒子,文件,批次。 每个框包含多个文档,每个文档有多个批次。 我想选择框中的文档计数,其中文档中至少有一个批次的值为IsDeleted=0

假设文档有10个批次,如果至少有一个批次的值isdeleted=0 我们将对其进行计数,否则如果所有批次的isdeleted=1,我们将不进行计数

如何根据上述内容选择od文件的编号


我试过了,但没用

SELECT b.ID as BOXID,d.ID as DocID, count(1) as CountDoc 
  FROM Documents as d 
 INNER JOIN dbo.Boxes as b on d.boxid = b.id 
 INNER JOIN dbo.Batches as t on d.ID = t.DocumentID 
 WHERE d.ID = t.DocumentID 
   AND d.boxid= b.id 
   AND t.isDeleted = 0 
 GROUP BY d.ID , t.DocumentID ,b.ID --HAVING t.isDeleted = 0

我试过了,但不起作用。选择b.ID作为BOXID,d.ID作为DocID,count(1)as CountDoc from Documents as d internal join dbo.box as b on d.boxid=b.id internal join dbo.Batches as t on d.id=t.DocumentID其中d.id=t.DocumentID和d.boxid=b.id和t.isDeleted=0按d.id、t.DocumentID、b.id分组t.isDeleted=0您可以随时编辑您的问题。因此,在问题中添加代码/模式,而不是注释。您能给我们提供表结构吗?旁注:不要在where中重复连接条件,它没有任何用途。
select boxid, count(distinct documentid)
from 
    documents
         inner join batches
    on documents.id = batches.documentid
where
    isdeleted = 0
group by boxid