【问题标题】:HiveQL - Linking Three Tables v2HiveQL - 链接三个表 v2
【发布时间】:2016-05-26 16:54:38
【问题描述】:

我有三个表,每个表都包含“ID”。最终结果应该将表 A 中的 ID_1 链接到表 C 中的 ID_4。什么查询会返回 ID_1 到 ID_4 的所有组合?

CREATE TABLE TABLE_A AS (ID_1 STRING, ID_2 STRING );

CREATE TABLE TABLE_B AS (ID_2 STRING, ID_3 STRING );

CREATE TABLE TABLE_C AS (ID_3 STRING, ID_4 STRING );

其中 Table_A 中的 ID_2 与 Table_B 中的 ID_2 相同。 其中Table_B 中的ID_3 与Table_C 中的ID_3 相同。 每个表中的 ID 之间的大多数关系都是 1:1,但也有少数是多:多的边缘情况。

什么查询会产生以下组合的所有可能性?

ID_1 to ID_1
ID_1 to ID_4
ID_4 to ID_4

ID_1 to ID_1 是两个不同的 ID_1 到一个不同的 ID_2 的情况。

ID_4 to ID_4 是一个不同的 ID_3 到两个不同的 ID_4 的情况。

【问题讨论】:

  • @GordonLinoff 我改变了我的提问范围。有什么想法吗?

标签: sql hive hiveql


【解决方案1】:

正确的语法使用显式连接:

SELECT a.ID_1, c.ID_4
FROM TABLE_A a JOIN
     TABLE_B b
     ON a.ID_2 = b.ID_2 JOIN
     TABLE_C c
     ON b.ID_3 = c.ID_3;

也就是说,这在功能上等同于您的查询。

【讨论】:

  • (前缀#对应ID_#)TABLE_A 1AA -> 2AA 1BB -> 2AATABLE_B 2AA -> 3AA 2AA -> 3BBTABLE_C 3AA -> 4AA 3AA -> 4BB 3BB -> 4AA 3BB -> 4CC在TABLE_C中,3AA和3BB连接到同一个ID,4AA。这个例子会被覆盖吗?什么会捕获所有可能的排列?
  • 对不起,上面是一个例子。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-04-20
  • 2011-10-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多