带内连接的RedShift SQL子查询

时间:2017-12-21 12:29:03

标签: sql join subquery amazon-redshift

我正在使用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));

2 个答案:

答案 0 :(得分:1)

这只是因为column si.item_id does not exist

在表item_id

的select语句中包含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

您应该将子查询想象为创建一个新的,单独的,短暂存在的表。外部查询将临时表连接到查询的其余部分。因此,未明确导致子查询的任何内容都不可用于外部查询。

我建议您在开发时首先编写并运行子查询。只有在它返回您期望的结果(没有错误,适当的列等)之后,您才能将其作为子查询复制/粘贴并开始开发主查询。