Missing FROM-clause entry for table XXX

* 描述问题

使用SQL创建表格后,表格不支持筛选,操作时报“missing FROM-clause entry for table “d_view_uqa””错误。其中d_view_uqa是一个SQL表格。由多个表格连接组成的结果表。SQL如下:
select uav.id as id, username, title, u.id as uid, v.id as vid, uav.“createdAt” as create_t, duration from d_lc_user u, d_lc_video v, d_wx_ua_video uav
where uav.lc_uid=u.id and uav.target_id=v.id

* 运行环境

  • NocoBase 版本:v1.3.27-beta
  • 数据库种类与版本: PostgreSQL 12
  • 操作系统: win10
    -浏览器及版本:edge129.0.2792.79
  • 部署方式:Docker
  • Docker 镜像版本:nocobase/nocobase:latest

如何重现

见描述问题

预期行为

截图

日志

配置 DB_LOGGING=on 环境变量,看一下报错时的完整 SQL

感谢回应,目前Nocobase已自动更新至1.4.16,但问题依旧。报错的完整SQL如下:

SELECT count(*) AS "count" 
FROM (
  select uav.id as id, username, title, u.id as uid, v.id as vid, uav."createdAt", duration 
  from d_lc_user u, d_lc_video v, d_wx_ua_video uav 
  where uav.lc_uid=u.id and uav.target_id=v.id
) AS "view_ua_video" 
WHERE ("d_view_ua_video"."username" ILIKE '%姚%');

询问ChatGPT得知

错误 missing FROM-clause entry for table d_view_ua_video 是因为在 WHERE 子句中引用了 d_view_ua_video 表,而这个表并没有在你的查询中定义。你实际上想引用的是子查询 view_ua_video 中的 username 字段。
要解决这个问题,你需要在 WHERE 子句中正确引用子查询的别名 view_ua_video

改正SQL如下即可:

SELECT count(*) AS "count" 
FROM (
-- 同上忽略
) AS "view_ua_video" 
WHERE ("view_ua_video"."username" ILIKE '%姚%');

这是个bug请尽快修复。谢谢!

@Chareice

请问 SQL 表的标识是什么,是否配置了 DB_TABLE_PREFIX 环境变量。