Sql 表的子句条目中缺少

Sql 表的子句条目中缺少,sql,postgresql,Sql,Postgresql,我正在尝试使用内部联接视图和表,使用以下查询 SELECT AcId, AcName, PldepPer, RepId, CustCatg, HardCode, BlockCust, CrPeriod, CrLimit, BillLimit, Mode, PNotes, gtab82.memno FROM VCustomer INNER JOIN vcustomer AS v1 ON gtab82.memacid = v1.acid WHERE (AcGr

我正在尝试使用
内部联接
视图和表,使用以下查询

SELECT 
   AcId, AcName, PldepPer, RepId, CustCatg, HardCode, BlockCust, CrPeriod, CrLimit, 
   BillLimit, Mode, PNotes, gtab82.memno 
FROM
   VCustomer 
INNER JOIN   
   vcustomer AS v1 ON gtab82.memacid = v1.acid 
WHERE (AcGrCode = '204' OR CreDebt = 'True') 
AND Masked = 'false'
ORDER BY AcName
错误是

missing FROM-clause entry for table "gtab82"

因为gtab82表不在FROM或JOIN子句中。在这些情况下,请参考gtab82表:gtab82.memno和gtab82.memacid

SELECT 
   AcId, AcName, PldepPer, RepId, CustCatg, HardCode, BlockCust, CrPeriod, CrLimit, 
   BillLimit, Mode, PNotes, gtab82.memno 
FROM
   VCustomer AS v1
INNER JOIN   
   gtab82 ON gtab82.memacid = v1.AcId 
WHERE (AcGrCode = '204' OR CreDebt = 'True') 
AND Masked = 'false'
ORDER BY AcName

通常,只有在由于联接表中的列名重复而需要使用表名作为列的前缀且表名较长时,或者当表联接到自身时,才使用表名的别名。在您的情况下,您为
VCustomer
使用别名,但由于不确定的原因,仅在
ON
子句中使用别名。您可能需要查看代码的这一方面。

呃,是的。您在
SELECT
ON
子句中引用了
gtab82
,但尚未在
FROM
JOIN
中指定它。您似乎还试图将
vcustomer
加入到它自己中这实际上对我很有用,因为我的代码中有一个硬编码查询,它是从数据库中的一个视图中选择的,因此别名的问题被混淆了。我看不出这是如何回答问题的,只是很难注意到对查询的更正(将“内部联接vcustomer”更改为“内部联接gtab82”)。