1

这是我的表:

  1. AB 元组表
  2. 具有 A.id 和 B.id 条目的 C 表
  3. 具有 C.id 条目和布尔字段“open”的 D 表

我想计算 D 表中 "open" = true 并且具有相同 A.id 和 B.id 的 C.id 的所有条目

我希望查询在一行中返回计数、通用 A.id 和通用 B.id

例如 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    

- 虽然可能没有必要

4

1 回答 1

1
SELECT
  COUNT(*),
  c.aid,
  c.bid
FROM
  d INNER JOIN c
ON
  d.cid = c.id
WHERE
  d.open
GROUP BY
  c.aid,
  c.bid;
于 2012-09-13T13:46:40.163 回答