我有以下查询:
query =
"SELECT
data #>> '{id}' AS id,
data #>> '{name}' AS name,
data #>> '{curator}' AS curator,
data #> '{$isValid}' AS \"$isValid\",
data #> '{customer}' AS customer,
data #> '{$createdTS}' AS \"$createdTS\",
data #> '{$updatedTS}' AS \"$updatedTS\",
data #> '{$isComplete}' AS \"$isComplete\",
(count(keys))::numeric as \"numProducts\",
created_at
FROM
appointment_intakes,
LATERAL jsonb_object_keys(data #> '{products}') keys
INNER JOIN
appointment_intake_users
ON
appointment_intake_users.appointment_intake_id = appointment_intakes.id
#{where_clause}
GROUP BY id"
以下代码出现了如下错误:
无效的表“appointment_intakes” FROM 子句引用项
在我添加以下代码后,错误开始出现:
LATERAL jsonb_object_keys(data #> '{products}') keys
并且
(count(keys))::numeric as \"numProducts\"
因为我需要计算产品的数量。
如何避免出现这种错误?
data
或id
)确切指的是哪个表。请使用表别名并进行澄清。请参考我的答案中的存根。同时声明您的Postgres版本和用于连接查询的编程语言。看起来像是SQL注入攻击的邀请……当然还有表定义——在psql中使用\d tbl
命令可以获取到。我们需要查看约束,例如PK和NOT NULL等。 - Erwin Brandstetter