postgresql - 错误:对表的 FROM 子句条目的引用无效
问题描述
saleco_dw=> SELECT s.cus_code AS Customer_Code, r.reg_name AS Region_Name, (s.sale_price*s.sale_units) AS Total_Sales
FROM dwdaysalesfact s, dwregion r
LEFT JOIN dwcustomer c
ON c.cus_code = s.cus_code
ORDER BY r.reg_name, c.cus_code;
ERROR: invalid reference to FROM-clause entry for table "s"
LINE 4: ON c.cus_code = s.cus_code
^
HINT: There is an entry for table "s", but it cannot be referenced from this part of the query.
解决方案
您不应该将过时的隐式连接与“现代”(近 30 岁)显式 JOIN 运算符相结合。您的查询是一个很好的例子,为什么隐式连接如此脆弱:您确实忘记了 and 之间的连接dwdaysalesfact
条件dwregion
。
您的错误的根本原因是连接样式更改的混合 - 它更改了如何查看和使用表(别名)的优先级。
所以重写它以使用正确的 JOIN 和 LEFT JOIN gest 中的引用是有效的:
SELECT s.cus_code AS Customer_Code,
r.reg_name AS Region_Name,
(s.sale_price*s.sale_units) AS Total_Sales
FROM dwdaysalesfact s
JOIN dwregion r ON s.??? = r.???
LEFT JOIN dwcustomer c ON c.cus_code = s.cus_code
ORDER BY r.reg_name, c.cus_code;
推荐阅读
- reactjs - React Router 刷新 url 但不刷新页面
- java - 使用 Spring Boot 验证 Generic Rest Api
- salesforce - 无法安装@salesforce/lwc-dev-server
- excel - 从 Microsoft CSV 读取大数据并写入 AWS 中的 Microsoft Excel 的策略
- amazon-athena - LOCATION 对于 Amazon Athena 中的数据库的用途是什么?
- python - 如何在轴上绘制时间图
- android - 如何使用 SwitcpMap 观察三个数据?
- python - vscode python模块智能感知不起作用
- javascript - 反应透视动画麻烦
- r - 为另一列中的每个唯一值分配一个名称