postgresql(对我来说)很难查询
以下是我的表格:postgresql(对我来说)很难查询,postgresql,associations,Postgresql,Associations,以下是我的表格: 元组表 具有A.id和B.id项的C表 具有C.id和布尔字段“open”的条目的D表 我想统计D表中的所有条目,其中“open”=true,并且它们的C.id具有相同的a.id和B.id 我希望查询在一行中返回计数、公共A.id和公共B.id 比如说 D表 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个条目具有具有相同援助
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个条目具有具有相同援助和出价的CID,它们被计算在同一条目中。因此,查询应返回以下两个条目:
1. count = 3 A.id = 3 B.id = 5
2. count = 1 A.id = 4 B.id = 6
我为AB制作了一个元组表,因为我认为它可以像下面的psuedo代码一样工作
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
-可能没有必要,但我有一个扩展问题,我想做同样的事情,但现在结果中有另一列,即返回的计数值与c中某个字段中存在的值之间的差值。我将把它作为另一个问题发布,以及如何从A表和B表中获取与这些行相关的其他字段。我想获取字段A.name和B.status,并将其添加到行中的其余列中。您可以在选择列表和分组方式列表中添加您想要的任何列。我有一个扩展问题,我想做同样的事情,但现在结果中有另一列,即返回的计数值与c中某个字段中存在的值之间的差异。我将把它作为另一个问题发布,以及如何从A表和B表中获取与这些行相关的其他字段。我想获取字段A.name和B.status,并将其添加到行中的其余列中。您可以在选择列表和分组方式列表中添加所需的任何列。
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;
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;