Postgresql 选择空FK时Postgres中的物化视图错误?

Postgresql 选择空FK时Postgres中的物化视图错误?,postgresql,select,null,views,Postgresql,Select,Null,Views,我在Postgres中有一个错误,如果我在查询中包含某些字段,查询将返回零记录 我正在使用PGAdmin客户端连接到供应商的数据库。我相信,我连接到的表是160万条记录的物化视图,带有一个复合主键(PK1和PK2) 如果我运行此查询: select PK1, PK2 from table where PK1 = 123 我将得到适当的子集,100条记录 如果我运行以下任一查询: select PK1, PK2, FK1 from table where PK1 = 123

我在Postgres中有一个错误,如果我在查询中包含某些字段,查询将返回零记录

我正在使用PGAdmin客户端连接到供应商的数据库。我相信,我连接到的表是160万条记录的物化视图,带有一个复合主键(PK1和PK2)

如果我运行此查询:

select PK1, PK2
  from table  
  where PK1 = 123
我将得到适当的子集,100条记录

如果我运行以下任一查询:

select PK1, PK2, FK1
  from table
  where PK1 = 123

我将得到零记录。我认为FK1字段与这个物化视图中的查找表连接;并且当FK1值为空时会发生错误


我不熟悉Postgres中的物化视图是如何构建的,但以前有人见过类似的情况吗?谢谢。

当您从PK1=123的表中运行
选择PK1,PK2,coalesce(FK1,”)时会发生什么?…您能粘贴用于创建视图及其约束的脚本吗?Vao Tsun-FK是一个INT,因此当我使用“coalesce(FK1,-1)”时,不会返回任何记录。这就好像如果在Select语句中的任何地方提到了FK—直接,或在函数中,或使用“*”,则不会返回任何记录;我只是通过ODBC连接访问表。所以我不知道这是一个物理表,一个像物理表一样的动态视图,还是一个像物理表一样的材质化视图。如果你可以连接psql而不是pgadmin,你可以说
\d+the_table\u name
,看看它到底是一个视图,一个物化视图,还是一个常规表,以及用于生成它的SQL(如果是view/matview)。这可能会给您一些线索。当您从PK1=123的表中运行
选择PK1,PK2,coalesce(FK1,”)时会发生什么?…您能粘贴用于创建视图及其约束的脚本吗?Vao Tsun-FK是一个INT,因此当我使用“coalesce(FK1,-1)”时,不会返回任何记录。这就好像如果在Select语句中的任何地方提到了FK—直接,或在函数中,或使用“*”,则不会返回任何记录;我只是通过ODBC连接访问表。所以我不知道这是一个物理表,一个像物理表一样的动态视图,还是一个像物理表一样的材质化视图。如果你可以连接psql而不是pgadmin,你可以说
\d+the_table\u name
,看看它到底是一个视图,一个物化视图,还是一个常规表,以及用于生成它的SQL(如果是view/matview)。这可能会给你一些线索。
select *
  from table
  where PK1 = 123