2015-09-01 56 views
-4

object_tbl:如何通過簡單的SQL或程序做

objId(primary key) | name 
1     | A 
2     | B 
3     | C 

document_tbl:

documentId | sourceId 
1   | 2 
2   | 2 
3   | 1 
4   | 3 
5   | 3 
6   | 3 

objToDoc_tbl:

id | objectId | documentId 
1 | 1  | 2 
2 | 2  | 4 
3 | 2  | 6 
4 | 1  | 5 
5 | 3  | 1 
6 | 1  | 2 

內連接所有表

A 2 2 
B 4 3 
B 6 3 
A 5 3 
C 1 2 
A 2 2 

A  2 
B  1 
C  1 

so答案是1(因爲A只有2)

問題: - 多少個對象與多個來源的文檔有關。
我們如何編寫SQL查詢這個或只能通過我們的程序解決

回答

0

您可以join所有的表,然後使用having獲得與計數對象> 1.

with t as (
select t.name, count(distinct d.sourceid) as count 
from objtodoc_tbl o 
join document_tbl d on o.documentid = d.documentid 
join object_tbl t on o.objectid = t.name 
group by t.name 
having count(distinct d.sourceid) > 1 
) 
select count(t.name) from t; 
+0

我都數不過來結果 – abhishek221192

+0

是指count> 1的對象的數量? –

+0

請參閱修改後的版本。 –

相關問題