我正在使用AWS Redshift SQL。我想内部加入一个子查询,其中包含group by和inner join。当我进行外部加入时;我收到一个错误,该列不存在。
查询:
const cv = require('../');
结果:
JSONArray objectsArray = (JSONArray) new JSONParser().parse(OBJECTS);
List<JSONObject> jo = (List<JSONObject>) objectsArray.parallelStream()
.sorted(Comparator.comparing((t) -> Double.parseDouble(((JSONObject) t).get("distance").toString())))
.collect(Collectors.toList());
System.out.println(JSONArray.toJSONString(jo));
答案 0 :(得分:1)
这只是因为column si.item_id does not exist
在表item_id
productweight
它应该有用。
答案 1 :(得分:0)
此查询存在许多问题。
对于子查询,您有一个ON
语句,但它没有加入:
FROM "productweight" up ON up."product_id" = sf."item_id"
当您加入此子查询的结果时,您将引用子查询中不存在的字段:
SELECT sf."AWB", SUM(up."weight") AS package_weight
...
) AS si ON si.item_id = ub.order_item_id
您应该将子查询想象为创建一个新的,单独的,短暂存在的表。外部查询将临时表连接到查询的其余部分。因此,未明确导致子查询的任何内容都不可用于外部查询。
我建议您在开发时首先编写并运行子查询。只有在它返回您期望的结果(没有错误,适当的列等)之后,您才能将其作为子查询复制/粘贴并开始开发主查询。