ここに私が持っているテーブルがあります:
- ABタプルテーブル
- A.id と B.id を持つエントリを持つ C テーブル
- C.id とブール値フィールド "open" を持つエントリを持つ D テーブル
「open」= true で、同じ A.id と B.id を持つ C.id を持つ D テーブルのすべてのエントリをカウントしたい
クエリで、カウント、共通 A.id、および共通 B.id を 1 行で返すようにしたい
たとえば、Dテーブル
D.id = 1, open=true, D.CID = 2
D.id = 2, open=true, D.CID = 3
D.id = 3, open=true, D.CID = 3
D.id = 4, open=true, D.CID = 4
Cテーブル
C.id = 2, A.id = 3, B.id = 5
C.id = 3, A.id = 3, B.id = 5
C.id = 4, A.id = 4, B.id = 6
Bc D の最初の 3 つのエントリには、同じエントリでカウントされる同じ AID と BID を持つ CID があります。したがって、クエリは次の 2 つのエントリを返す必要があります。
1. count = 3 A.id = 3 B.id = 5
2. count = 1 A.id = 4 B.id = 6
次の疑似コードのように動作することを考えたので、AB のタプル テーブルを作成しました。
For each entry i in tuple Table AB
for each entry j in Table C
for each entry k in Table D
if j.AID AND j.BID equal to i.AID and i.BID
And if k.CID = j.id
Then returnHash[i] = returnHash[i] + 1
――必要ないかもしれませんが