Join 连接表时配置单元查询出错

Join 连接表时配置单元查询出错,join,hadoop,hive,hiveql,cloudera-cdh,Join,Hadoop,Hive,Hiveql,Cloudera Cdh,我无法使用下面的配置单元查询通过相等性检查 我有3张桌子,我想加入这些桌子。我尝试如下操作,但出现错误: 失败:语义分析错误:第3:40行在加入“访问日期”中遇到左别名和右别名 select t1.*, t99.* from table1 t1 JOIN (select v3.*, t3.* from table2 v3 JOIN table3 t3 ON ( v3.AS_upc= t3.upc_no AND v3.start_dt <= t3.visit_date A

我无法使用下面的配置单元查询通过相等性检查

我有3张桌子,我想加入这些桌子。我尝试如下操作,但出现错误:

失败:语义分析错误:第3:40行在加入“访问日期”中遇到左别名和右别名

select t1.*, t99.* from table1 t1 JOIN 
    (select v3.*, t3.* from table2 v3 JOIN table3 t3 ON
    ( v3.AS_upc= t3.upc_no AND v3.start_dt <= t3.visit_date  AND v3.end_dt >= t3.visit_date AND v3.adv_price <= t3.comp_price ) ) t99 ON
    (t1.comp_store_id = t99.cpnumber AND t1.AS_store_nbr = t99.store_no);
根据FuzzyTree的帮助进行编辑:

第一:

我们尝试使用between和where子句编辑上述查询,但没有从查询中获得任何输出

但是如果我们通过删除带有日期的between子句来更改上面的查询,那么我就得到了一些基于v3.adv_price的输出 中仅支持相等联接、外部联接和左半联接 蜂箱配置单元不支持不相等的联接条件 条件,因为很难将此类条件表示为 映射/减少作业

试着把你的不等式转移到where子句


我根据您的帮助编辑了查询,但仍然无法从查询中获得输出。我已经更新了我原来的帖子。我遇到了同样的问题。建议的解决方案是好的。然而,我注意到错误消息可以改进。这是误导。
select t1.*, t99.* from table1 t1 JOIN
    (select v3.*, t3.* from table2 v3 JOIN table3 t3 on (v3.AS_upc= t3.upc_no) 
        where v3.adv_price <= t3.comp_price
    ) t99 ON
    (t1.comp_store_id = t99.cpnumber AND t1.AS_store_nbr = t99.store_no);
select t1.*, t99.* from table1 t1 JOIN
        (select v3.*, t3.* from table2 v3 JOIN table3 t3 on (v3.AS_upc= t3.upc_no) 
            where v3.adv_price <= t3.comp_price and v3.start_dt <= t3.visit_date
        ) t99 ON
        (t1.comp_store_id = t99.cpnumber AND t1.AS_store_nbr = t99.store_no);
select t1.*, t99.* from table1 t1 JOIN
    (select v3.*, t3.* from table2 v3 JOIN table3 t3 on (v3.AS_upc= t3.upc_no) 
        where t3.visit_date between v3.start_dt and v3.end_dt
        and v3.adv_price <= t3.comp_price
    ) t99 ON
    (t1.comp_store_id = t99.cpnumber AND t1.AS_store_nbr = t99.store_no);