目前,我正在尝试基于两个具有三个条件的表的 Inner Join 查询创建一个新表。但是,SQL 错误窗口总是告诉我这些列不存在,即使它们显然存在。
因此,当两个特定值在列表中彼此相等并且第三个值在哪里共享相似性时,这就是必须发生的内连接。
这是因为虽然第一个表中的 Plotletter 实际上只有一个字母,例如 A。应用程序可以写成 ABCD。
我也已经尝试按照建议明确将字段引用到正确的表,但错误仍然存在。
CREATE TABLE testschema.FinalPlantenpaspoort
AS
SELECT PrimaryIndex, jaarpr, proefcode, plotleter, plotcijfer, plot, X, Y
FROM testschema.plantenpaspoortsjabloon
JOIN testschema.weegschaalproeven
ON plantenpaspoortsjabloon.proefcode = weegschaalproeven.Intern_Proef_Nr
AND plantenpaspoortsjabloon.plotcijfer = weegschaalproeven.Objectnr
WHERE plantenpaspoortsjabloon.plotletter LIKE weegschaalproeven.Application
;
这是他们给我的错误和建议,但没有运气。
ERROR: column weegschaalproeven.intern_proef_nr does not exist LINE 5: ON plantenpaspoortsjabloon.proefcode = weegschaalproeven.Int... ^ HINT: Perhaps you meant to reference the column "weegschaalproeven.Intern_Proef_Nr". SQL state: 42703 Character: 237
**
编辑 2/07/2019:问题已解决,但选择了 0 条记录。
** 好的,问题似乎解决了,但是代码确实有效时出现了一种新问题,因为 JOIN 选择了 0 条记录。这不应该是这样的。我知道有匹配的记录,因为这是一个测试,我确保 QGIS 中的 shapefile 表包含相关的数据。
Create TABLE testschema.finalplantenpaspoort AS
SELECT jaarpr, proefcodet, plotletter, plotcijfer, plot, X, Y
FROM testschema.plantenpaspoortsjabloon
JOIN testschema.weegschaalproeven
ON plantenpaspoortsjabloon.proefcodet = weegschaalproeven.intern_proef_nr AND plantenpaspoortsjabloon.plotcijfer = weegschaalproeven.objectnr
WHERE plantenpaspoortsjabloon.plotletter LIKE weegschaalproeven.application
;
**SELECT 0**
Query returned successfully in 72 msec.