2013-08-06 3 views
0

У меня есть 3 таблицы Box, Documemts, партии. каждый блок содержит более одного документа, и каждый документ имеет несколько партий. я хочу выбрать количество документов в Boxs где, по меньшей мере, 1 партия в документе имеет значение IsDeleted = 0.Получить количество записей из нескольких таблиц в SQL

давайте предположим, что документ имеет 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 
+0

я попытался это, но он не работает, как выбрать b.ID BOXID, d.ID, как DocId, граф (1) в качестве CountDoc из Документы как d внутреннее соединение dbo.Boxes как b на d.boxid = b.id INNER JOIN dbo. Исправлено как t on d.ID = t.DocumentID где 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

Смежные вопросы