我有以下sql(Postgresql)查询:
SELECT ff.*,fp.* FROM fibra ff,fibra fp JOIN cables cp ON fp.cable_id = cp.id LEFT OUTER JOIN terceiro ced_pai ON ced_pai.id = cp.cedente_id LEFT OUTER JOIN terceiro tp ON tp.id = fp.terceiro_id JOIN cables cf ON ff.cable_id = cf.id LEFT OUTER JOIN terceiro ced_f ON ced_f.id = cf.cedente_id LEFT OUTER JOIN terceiro tf ON tf.id = ff.terceiro_id where ff.fibra_pai_id = fp.id AND ff.cable_id IN (8,9,10) AND fp.cable_id IN (8,10)
但它给我这个错误:
ERROR: invalid reference to FROM-clause entry for table "ff" LINE 8: JOIN cables cf ON ff.cable_id = cf.id ^ HINT: There is an entry for table "ff",but it cannot be referenced from this part of the query. ********** Error ********** ERROR: invalid reference to FROM-clause entry for table "ff" sql state: 42P01 Hint: There is an entry for table "ff",but it cannot be referenced from this part of the query. Character: 261
有谁知道我做错了什么?
你正在混合隐式和显式的JOIN.这通常是令人困惑的阅读,并导致意外的评估阶段问题,正如你刚刚发现的.
你应该始终使用JOIN … ON语法无处不在;避免遗留FROM table1,table2.如果您更正您的查询以使用明确的JOIN而不是FROM纤维ff,则可以从WHERE子句中忽略ff.fibra_pai_id = fp.id,例如,从原始文件ff INNER JOIN fibra fp ON(ff.fibra_pai_id = fp.id)你应该得到预期的结果.
看到这个问题,A.H.链接到:
原文地址:https://www.jb51.cc/postgresql/192637.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。