Sql 我做错了什么?试图在子查询中将具有相同行id的行id联接以派生计数

Sql 我做错了什么?试图在子查询中将具有相同行id的行id联接以派生计数,sql,oracle,Sql,Oracle,因此,我试图获得一个用户链接到的文件数量的计数。但是,由于某些奇怪的原因,par_row_ID(原始_表标识符)没有连接,我的结论如下: SELECT file_count.par_row_id, original_table.par_row_id, file_count.count FROM original_table original_table left outer join (SELECT original_table.par_row_id

因此,我试图获得一个用户链接到的文件数量的计数。但是,由于某些奇怪的原因,par_row_ID(原始_表标识符)没有连接,我的结论如下:

SELECT file_count.par_row_id,
       original_table.par_row_id,
       file_count.count
FROM   original_table original_table
       left outer join (SELECT original_table.par_row_id,
                               Count(*) AS count
                        FROM   original_table original_table
                        WHERE  type_code = 'file'
                        GROUP  BY original_table.par_row_id) file_count
                    ON original_table.par_row_id = file_count.par_row_id;

我做错了什么?提前感谢。

您的别名不是最直观的,但是查询应该会返回一些连接结果。我想知道您是否愿意做以下工作:

select ot.par_row_id,
       nvl(x.c,0) as cnt
from original_table ot
left outer join (
                  select par_row_id,
                         count(*) as c
                  from original_table
                  where type_code = 'file'
                  group by par_row_id
                ) x
on ot.par_row_id = x.par_row_id;

Oracle是我正在使用的。抱歉,我添加了一个建议标签,但没有查看Oracle说了什么?有错误吗?还是什么也不回?内联视图(您的文件计数)是否返回任何内容?可能的话,发布一个测试用例,这样我们就可以看一看了。没有语法错误但是为什么要使用
original\u table
来别名
original\u table
,请以
o
为例。顺便问一下,您是否至少有一行填充了
not null par\u row\u id
列,并且值为
type\u code
as
file
(都是小写字母,区分大小写也可能导致键入错误)。我将更改别名。我让它工作,我需要右连接而不是左连接。我不确定为什么我仍然会返回两个par_row_id的所有空值,因为一些奇怪的原因,你必须发布你的架构,如果可能的话,发布一些数据-我只是在精炼你发布的确切SQL。结果证明,使用右外部联接而不是左外部联接(出于一些奇怪的原因)