加入多个“.”在表格中

Joins with multiple "." in tables

请原谅背景故事...我对 SQL 不是很有经验,但我知道的比 "just enough to get myself into trouble" 多一点。我所拥有的知识是建立在我在 MySQL 方面的经验之上的。我不太幸运的一件事是使用任何 join(但我一直在使用我能找到的所有资源来解决这个问题)。说到这里,我正在尝试在两个表上执行 join。我正在使用 SQL Workbench。我必须使用的表对我来说似乎有点奇怪,因为根据查询,我可能需要也可能不需要使用“。”调用它时。每当我尝试 describe 使用 show tables; 找到的任何表时,查询往往会失败,除非我在它前面添加 "all_tables."(不是真实姓名)。 describe all_tables.sub_table_1; 就是一个例子。当 运行 实际查询时,只有少数表需要 "all_tables." 前缀。不幸的是,我需要加入的两个表都需要该前缀。因此,考虑到所有这些,我需要对 join 这些表做一些特别的事情吗?到目前为止我已经尝试过这些东西,但没有任何运气:

select all_tables.sub_table_1.column_1 as "Code",
all_tables.sub_table_2.column_1 as "Name",
count(all_tables.sub_table_1.column_1) as "Count",
all_tables.sub_table_2.column_2 as "Description"
from all_tables.sub_table_1 as errors
left join all_tables.sub_table_2 as codes on errors.column_2=codes.column_3
and errors.column_3= codes.column_4
where errors.column_4 like 'floor_%' and errors.event_timestamp> timestamp '2019-09-30 00:00:00.000' and errors.column_5='9900' group by errors.column_1; ```

“Teradata]Presto 查询失败:行 1:8:无法解析列 'all_tables.sub_table_1.column_1'。”是输出。

我意识到这可能是一场语义噩梦(很可能是语法)。我试过删除 "all_tables." 前缀、所有 as 调用,并检查了 4 次拼写,但查询总是在同一个地方中断。我的错误很简单,还是这里发生了更复杂的事情?预先感谢您阅读我的小说后愿意提供帮助。

您已经为您的表定义了别名。您需要为 所有 引用使用别名:

select errors.column_1 as "Code", codes.column_1 as "Name",
       count(errors.column_1) as "Count",
       codes.column_2 as "Description"
from all_tables.sub_table_1 as errors left join
     all_tables.sub_table_2 as codes
     on errors.column_2 = codes.column_3 and
        errors.column_3 = codes.column_4
where errors.column_4 like 'floor_%' and
      errors.event_timestamp > timestamp '2019-09-30 00:00:00.000' and
      errors.column_5='9900'
group by errors.column_1, codes.column_1, codes.column_2

请尝试以下,聚合问题也应该得到解决。

select errors.column_1 as "Code",
codes.column_1 as "Name",
codes.column_2 as "Description",
count(errors.column_1) as "Count"
from all_tables.sub_table_1 as errors
left join all_tables.sub_table_2 as codes 
       on errors.column_2=codes.column_3
      and errors.column_3= codes.column_4
where errors.column_4 like 'floor_%' 
  and errors.event_timestamp> timestamp '2019-09-30 00:00:00.000' 
  and errors.column_5='9900' 
group by errors.column_1,codes.column_1,codes.column_2;