Объединяется с несколькими "."в таблицах - PullRequest
0 голосов
/ 01 октября 2019

Пожалуйста, извините предысторию ... Я не очень разбираюсь в SQL, но знаю немного больше, чем просто "достаточно, чтобы попасть в неприятности". Знания, которые у меня есть, основаны на опыте работы с 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 и 4x проверяли орфографию, но запрос всегда прерывался в одном и том же месте. Является ли моя ошибка чем-то простым, или здесь происходит что-то более сложное? Заранее благодарю за готовность помочь после прочтения моего романа.

Ответы [ 2 ]

0 голосов
/ 02 октября 2019

Пожалуйста, попробуйте ниже, также должна быть решена совокупная проблема.

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; 
0 голосов
/ 01 октября 2019

Вы определили псевдонимы для своих таблиц. Вам необходимо использовать псевдонимы для всех ссылок:

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
...