2013-08-06 57 views
0

我有3个表格Boxume,Documemts,Batches。 每个包含多个文件,每个文件有多个批次。 我要选择的文件Boxs算其中至少有1批文件中请将isDeleted具有= 0从SQL中的多个表中获取记录计数

让我们假设该文件有10个批次,如果至少一个批次有= 0 的请将isDeleted值的值我们会计算它,否则,如果所有批次的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 
+0

我想这但它不工作选择b.ID如BOXID,d.ID中的DocID,计数(1)CountDoc 从文件为d内连接dbo.Boxes为b上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 – MMomani

+2

您可以将edi随时问你的问题。因此,在您的问题中添加您的代码/架构而不是评论。 – hims056

+0

你可以给我们的表结构吗? – cameronjonesweb

回答

0
select boxid, count(distinct documentid) 
from 
    documents 
     inner join batches 
    on documents.id = batches.documentid 
where 
    isdeleted = 0 
group by boxid 
+0

谢谢你对我的工作很好。 – MMomani