从SQL中的多个表获取记录计数
我有3张桌子,盒子,文件,批次。 每个框包含多个文档,每个文档有多个批次。 我想选择框中的文档计数,其中文档中至少有一个批次的值为IsDeleted=0 假设文档有10个批次,如果至少有一个批次的值isdeleted=0 我们将对其进行计数,否则如果所有批次的isdeleted=1,我们将不进行计数 如何根据上述内容选择od文件的编号从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
我试过了,但没用
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