有三个表:
parentbooks和personalbooks都有一个名为-b
的列,其中包含一组作者ID。
我需要获取在parent_books或individual_books中有条目的作者列表,以及每个作者的parent_books和individual_books计数。
author.id,author.name,pcount和icount
我尝试了此查询
authors
pcount和icount被覆盖,请帮忙吗?
答案 0 :(得分:2)
首先,让我指出在这里使用数组是不好的数据库设计。您应该使用表格而不是数组来建立书籍和作者之间的关系。
也就是说,您可以使用外部查询来聚合值:
SELECT id, name,
sum(pcount) AS pcount,
sum(icount) AS icount
FROM (SELECT a.id, a.name,
count(pb.id) as pcount,
BIGINT '0' AS icount
FROM authors AS a
INNER JOIN parent_books pb
ON pb.authors::UUID[] @> ARRAY[a.id]
GROUP BY a.id
UNION ALL
SELECT a.id, a.name,
BIGINT '0' AS pcount,
count(ib.id) AS icount
FROM authors AS a
INNER JOIN individual_books ib
ON ib.authors::UUID[] @> ARRAY[a.id]
GROUP BY a.id) AS q
GROUP BY id, name;