当我连接两个表时,列参数是不明确的

时间:2016-04-19 10:12:45

标签: sql join

两个表(zielpersonen和wegeinland)都有一个名为WP的列。所以当我加入它们时,有一个错误说列引用“WP”是不明确的。实际上我想使用来自zielpersonen表的WP进行计算。如何避免此错误?

SELECT SUM("WP"*"w_rdist")/(62868*AVG("WP"))  FROM mobility.mzmv2010.zielpersonen 
JOIN mobility.mzmv2010.wegeinland USING ("HHNR","ZIELPNR")

2 个答案:

答案 0 :(得分:0)

在您的查询中,为表使用别名,然后使用相应的表别名为所需的列添加前缀。

SELECT
    SUM(zp."WP"*"w_rdist")/(62868*AVG(zp."WP"))  
FROM mobility.mzmv2010.zielpersonen zp
JOIN mobility.mzmv2010.wegeinland wg 
    USING ("HHNR","ZIELPNR")

这通常是您在查询中访问更多表时的最佳做法,因此请确保在查询中为所有列添加前缀。

通过执行此操作,您实际上有点主动,因为如果有可能将现在位于单个表中的列添加到您的第二个表中,则此查询将失败并且将需要更正(我猜是你不希望在生产环境中发生的事情。)

答案 1 :(得分:0)

您应该使用表别名和限定列名。不只是在这个查询中,而是一个好习惯:

SELECT SUM(p."WP" * "w_rdist")/ (62868 * AVG(p."WP"))
FROM mobility.mzmv2010.zielpersonen p JOIN
     mobility.mzmv2010.wegeinland w
     USING ("HHNR", "ZIELPNR")

我不知道w_rdist来自何处,但也应该有一个表别名。