PostgreSQL从一个表中选择全部,并从表关系中选择联接计数
我有两个表,PostgreSQL从一个表中选择全部,并从表关系中选择联接计数,sql,postgresql,join,count,psql,Sql,Postgresql,Join,Count,Psql,我有两个表,post\u categories和posts。我正在尝试从post_类别中选择*,但也返回一个临时列,其中包含每次在文章上使用文章类别时的计数 帖子 | id | name | post_category_id | | 1 | test | 1 | | 2 | nest | 1 | | 3 | vest | 2 | | 4 | zest | 3 | |
post\u categories
和posts
。我正在尝试从post_类别中选择*代码>,但也返回一个临时列,其中包含每次在文章上使用文章类别时的计数
帖子
| id | name | post_category_id |
| 1 | test | 1 |
| 2 | nest | 1 |
| 3 | vest | 2 |
| 4 | zest | 3 |
| id | name |
| 1 | cat_1 |
| 2 | cat_2 |
| 3 | cat_3 |
帖子类别
| id | name | post_category_id |
| 1 | test | 1 |
| 2 | nest | 1 |
| 3 | vest | 2 |
| 4 | zest | 3 |
| id | name |
| 1 | cat_1 |
| 2 | cat_2 |
| 3 | cat_3 |
基本上,我尝试在不使用子查询的情况下使用联接来实现这一点。类似这样的东西,但在realpsql
中
从帖子类别中选择*某种类型的加入帖子,计数(*)
因此,理想情况下
| id | name | count |
| 1 | cat_1 | 2 |
| 2 | cat_2 | 1 |
| 3 | cat_3 | 1 |
非常感谢您的帮助:D您可以使用一个派生表,该表包含每个post\u category\u id
的计数,并将其左键连接到post\u categories
表
select p.*, coalesce(t1.p_count,0)
from post_categories p
left join (
select post_category_id, count(*) p_count
from posts
group by post_category_id
) t1 on t1.post_category_id = p.id
可能您的表名不完全是post_categories
:(很遗憾:/n如果存在post_categories.id、post_categories.name以外的任何其他列,您还必须在聚合函数中使用它们。是的,您是对的!答案已更新。然后进入睡眠状态:)