使用下面的HIVE查询,我无法通过相等性检查。
我有3个表,想要将这些表连接起来。我尝试了以下方法,但是遇到错误:
FAILED: Error in semantic analysis: Line 3:40 Both left and right aliases encountered in JOIN 'visit_date'
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 <= t3.comp_price”的条件,那么可以得到一些输出,但没有使用“日期过滤器”。
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);
现在它显示了一些结果,但如果我们通过起始和结束日期过滤,则不会显示任何结果。