Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 配置单元:连接表_Sql_Hive - Fatal编程技术网

Sql 配置单元:连接表

Sql 配置单元:连接表,sql,hive,Sql,Hive,我刚刚开始学习SQL和Hive。在试图完成一项任务时,面临一个问题 有两个表格: db_base.memberdata tb_1
 tb_1.mem_id, tb_1.mem_nbr, tb_1.mem_grp, tb_1.mem_ctry, tb_1.mem_email, tb_1.mem_enrldate db_history.memberhdata tb_2 tb_2.mem_id, tb_2.mem_nbr, tb_2.mem_grp, tb_2.mem_stat, t

我刚刚开始学习SQL和Hive。在试图完成一项任务时,面临一个问题

有两个表格:

db_base.memberdata tb_1
    
tb_1.mem_id,
tb_1.mem_nbr,
tb_1.mem_grp,
tb_1.mem_ctry,
tb_1.mem_email, 
tb_1.mem_enrldate



db_history.memberhdata tb_2 
tb_2.mem_id,
tb_2.mem_nbr,
tb_2.mem_grp,
tb_2.mem_stat,
tb_2.mem_cd,
tb_2.mem_lvl,
tb_2.mem__stat_desc,
tb_2.mem_enrldate
尝试通过以下方式加入表:

SELECT tb_1.mem_id,tb_1.mem_nbr,tb_1.mem_grp,tb_1.mem_ctry,tb_1.mem_email,tb_1.mem_enrldate 
    FROM db_base.memberdata tb_1
INNER JOIN
(SELECT 
tb_2.mem_id,tb_2.mem_nbr,tb_2.mem_grp,tb_2.mem_stat,tb_2.mem_cd,tb_2.mem_lvl,tb_2.mem__stat_desc,
tb_2.mem_enrldate
FROM db_history.memberhdata tb_2 
WHERE 
tb_2.mem_enrldate BETWEEN '2018-01-01' AND '2018-06-01' 
AND tb_2.mem_id = 4 AND tb_2.mem_nbr = 1 
AND tb_2.mem_grp = 1) tb_2a
ON tb_2a.mem_id = tb_1.mem_id 
limit 100;
我得到的错误是:

FAILED: ParseException line 9:0 cannot recognize input near 'ON' 'tb_2' '.' in subquery source 
尝试在网上查看几个示例,但这里似乎没有任何效果。对不起,我的知识有限。请帮忙

在查询中执行更新后,获取:

FAILED: SemanticException [Error 10002]: Line 13:9 Invalid column reference 'mem_id'

我注意到您正在从每个表中选择all,因此为了简单起见,我只是将其缩短(使用*)


请注意别名AA和BB的位置。

来自db_history.memberhdata tb_2是在参数内部定义的。您需要在正确的参数后面添加别名,比如tb_2a,然后使用它alias@donPablo谢谢我按照你的建议做了同样的事情,但是现在得到了一个不同的错误。我已经在上面的主要问题中更新了。我不知道。。。我没有行号,所以我猜第13行是什么——我们需要)作为tb_2a吗——或者你能尝试“双重资格”吗?tb_2a.tb_2.mem_id=tb_1.tb_1.mem_id
SELECT * FROM tb_1 as AA
INNER JOIN
(
select * from tb_2 as Tb_2
WHERE
Tb_2.enrldate between  months_between('2018-06-01', '2015-01-01')
AND Tb_2.id=4 AND Tb_2.nbr=1
AND tb_2.grp=1
) as BB
ON AA.id=BB.id
LIMIT 100;