【发布时间】:2020-08-13 03:50:57
【问题描述】:
- 表项目:pid(pk)、名称...
- 表类别:pid(pk)、project(project's pid)、parent(other category's pid) ...
- 表计数:项目(项目的 pid)、类别(类别的 pid)、计数 ...
我之前用过这个查询
SELECT
categories.*, projects.pid, projects.name, parent_category.*
FROM categories
INNER JOIN projects ON projects.pid = categories.project
LEFT JOIN categories AS parent_category ON parent_category.pid = categories.parent
效果很好
这一次我们需要 SUM, COUNT 个数据。所以我添加了“counts”表并进行了这个查询。
SELECT
categories.*, projects.pid, projects.name, SUM(counts.count), COUNT(counts.count),
parent_category.*, SUM(parent_category_count.count), COUNT(parent_category_count.count)
FROM categories
INNER JOIN projects ON projects.pid = categories.project
LEFT JOIN counts ON counts.category = categories.pid
LEFT JOIN categories AS parent_category ON parent_category.pid = categories.parent
LEFT JOIN counts AS parent_category_count ON parent_category_count.category = categories.pid
然后我得到
错误:聚合函数调用不能嵌套
我能做什么?这个查询基本上有意义吗?还是我应该拆分它?
【问题讨论】:
-
你错过了
group by。 -
请在代码问题中给出minimal reproducible example--cut & paste & runnable code,包括最小的代表性示例输入作为代码;期望和实际输出(包括逐字错误消息);标签和版本;明确的规范和解释。给出您可以给出的最少代码,即您显示的代码可以通过您显示的代码扩展为不正常。 (调试基础。)对于包含 DBMS 和 DDL(包括约束和索引)和输入为格式化为表格的代码的 SQL。
-
在考虑发布之前,请阅读手册和谷歌任何错误消息或您的问题/问题/目标的许多清晰、简洁和精确的措辞,有和没有您的特定字符串/名称和站点:stackoverflow.com &标签;阅读许多答案。如果您发布问题,请使用一个短语作为标题。反映你的研究。请参阅How to Ask 和投票箭头鼠标悬停文本。
标签: sql postgresql join grouping aggregate-functions