加入多个“.”在表格中
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;
请原谅背景故事...我对 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;