Postgresql “错误”;“表”的条款条目中缺少;
当我使用下面的代码时,我得到了错误“missing FROM子句entry for table zp”。有人知道我如何消除这个错误吗Postgresql “错误”;“表”的条款条目中缺少;,postgresql,Postgresql,当我使用下面的代码时,我得到了错误“missing FROM子句entry for table zp”。有人知道我如何消除这个错误吗 SELECT SUM(zp.WP*et.GIS) FROM (SELECT DISTINCT zp.HHNR,zp.ZIELPNR FROM mobility.zielpersonen zp FULL OUTER JOIN mobility.etappen et ON zp.HHNR=et.HHNR AND zp.ZIELPNR=et.ZIELPNR ) as e
SELECT SUM(zp.WP*et.GIS)
FROM (SELECT DISTINCT zp.HHNR,zp.ZIELPNR FROM mobility.zielpersonen zp
FULL OUTER JOIN mobility.etappen et
ON zp.HHNR=et.HHNR AND zp.ZIELPNR=et.ZIELPNR
) as examp
此处不能参考
zp
和et
表:
SELECT SUM(zp.WP*et.GIS)
它们只能在子查询范围内引用
只需尝试这样做:
SELECT SUM(examp.WP*examp.GIS)
FROM (SELECT DISTINCT zp.HHNR,zp.ZIELPNR FROM mobility.zielpersonen zp
FULL OUTER JOIN mobility.etappen et
ON zp.HHNR=et.HHNR AND zp.ZIELPNR=et.ZIELPNR
) as examp
此处不能参考
zp
和et
表:
SELECT SUM(zp.WP*et.GIS)
它们只能在子查询范围内引用
只需尝试这样做:
SELECT SUM(examp.WP*examp.GIS)
FROM (SELECT DISTINCT zp.HHNR,zp.ZIELPNR FROM mobility.zielpersonen zp
FULL OUTER JOIN mobility.etappen et
ON zp.HHNR=et.HHNR AND zp.ZIELPNR=et.ZIELPNR
) as examp
我想提出这一猜测:
SELECT SUM(exam.WP * exam.GIS)
FROM (SELECT DISTINCT zp.HHNR,
zp.ZIELPNR,
zp.WP,
et.GIS
FROM mobility.zielpersonen zp
FULL OUTER JOIN mobility.etappen et
ON zp.HHNR=et.HHNR AND zp.ZIELPNR=et.ZIELPNR
) as examp
这在不同的查询中包括WP和GIS,可能是您想要的,也可能不是
然而,我认为在这种情况下,最自然的方法是仅按HHNR和ZIELPNR分组,并计算其他值的总和。这可以通过使用以下查询来完成:
SELECT zp.HHNR, zp.ZIELPNR, SUM(zp.WP*et.GIS) AS CalcResult
FROM mobility.zielpersonen zp
LEFT JOIN mobility.etappen et
ON zp.HHNR=et.HHNR
AND zp.ZIELPNR=et.ZIELPNR
GROUP BY zp.HHNR, zp.ZIELPNR
我将外部联接
替换为左联接
,因为我认为计算/分组空值总和没有意义
如果这两个选项都不是您想要的,请澄清问题 我想提出这个猜测:
SELECT SUM(exam.WP * exam.GIS)
FROM (SELECT DISTINCT zp.HHNR,
zp.ZIELPNR,
zp.WP,
et.GIS
FROM mobility.zielpersonen zp
FULL OUTER JOIN mobility.etappen et
ON zp.HHNR=et.HHNR AND zp.ZIELPNR=et.ZIELPNR
) as examp
这在不同的查询中包括WP和GIS,可能是您想要的,也可能不是
然而,我认为在这种情况下,最自然的方法是仅按HHNR和ZIELPNR分组,并计算其他值的总和。这可以通过使用以下查询来完成:
SELECT zp.HHNR, zp.ZIELPNR, SUM(zp.WP*et.GIS) AS CalcResult
FROM mobility.zielpersonen zp
LEFT JOIN mobility.etappen et
ON zp.HHNR=et.HHNR
AND zp.ZIELPNR=et.ZIELPNR
GROUP BY zp.HHNR, zp.ZIELPNR
我将外部联接
替换为左联接
,因为我认为计算/分组空值总和没有意义
如果这两个选项都不是您想要的,请澄清问题 如何消除此错误?不要在其上下文之外使用表名(
zp
&et
)(它仅在子选择中有效;在外部选择中,您只有examp.HHNR
和examp.ZIELPNR
),但它表示“wp”列不存在。那么我如何使用这些变量呢?因为实际上我想计算具有不同HHNR和ZIELPNR的人的(wp*GIS)之和。如果您想在HHNR和ZIELPNR上使用distinct,但需要zp.wp和et.GIS列,请使用distinct on(zp.HHNR,zp.ZIELPNR)zp.wp,et.GIS
这是distinct的一个特殊功能,但是如果您需要创建与SQL兼容的查询,您必须使用GROUP BY
如何消除此错误?不要在其上下文之外使用表名(zp
&et
)(它仅在子选择中有效;在外部选择中,您只有examp.HHNR
和examp.ZIELPNR
),但它表示“wp”列不存在。那么我如何使用这些变量呢?因为实际上我想计算具有不同HHNR和ZIELPNR的人的(wp*GIS)之和。如果您想在HHNR和ZIELPNR上使用distinct,但需要zp.wp和et.GIS列,请使用distinct on(zp.HHNR,zp.ZIELPNR)zp.wp,et.GIS
这是distinct的一个特殊功能,但是如果您需要创建与SQL兼容的查询,您必须使用groupby
子查询输出中不存在WP列和GIS列,但它会说“WP”列不存在。那么我如何使用这些变量呢?因为实际上我想计算HHNR和ZIELPNR不同的人的(wp*GIS)之和,那么“wp”和“GIS”是什么?wp是来自zp的变量,GIS是来自et的变量。这两个表共享HHHNR和ZIELPNR变量。我想为不同的HHNR和ZIELPNR计算(WP*GIS)。子查询输出中不存在WP和GIS列。但它表示“WP”列不存在。那么我如何使用这些变量呢?因为实际上我想计算HHNR和ZIELPNR不同的人的(wp*GIS)之和,那么“wp”和“GIS”是什么?wp是来自zp的变量,GIS是来自et的变量。这两个表共享HHHNR和ZIELPNR变量。我想计算不同HHNR和ZIELPNR的(WP*GIS)