Cláusula FROM - Amazon Redshift

Cláusula FROM

A cláusula FROM em uma consulta lista as referências de tabela (tabelas, exibições e subconsultas) de onde os dados são selecionados. Se as referências de várias tabelas estiverem listadas, as tabelas devem ser juntadas, usando a sintaxe apropriada na cláusula FROM ou WHERE. Se nenhum critério de junção for especificado, o sistema processará a consulta como uma junção cruzada (produto cartesiano).

Sintaxe

FROM table_reference [, ...]

onde referência_tabela é uma das seguintes:

with_subquery_table_name [ [ AS ] alias [ ( column_alias [, ...] ) ] ] table_name [ * ] [ [ AS ] alias [ ( column_alias [, ...] ) ] ] ( subquery ) [ AS ] alias [ ( column_alias [, ...] ) ] table_reference [ NATURAL ] join_type table_reference [ ON join_condition | USING ( join_column [, ...] ) ] table_reference [ PIVOT ] ( aggregate(expr) [ [ AS ] aggregate_alias ] FOR column_name IN ( expression [ [ AS ] in_alias [, ...] ) ) [ [ AS ] in_alias [, ...] ) ] ] table_reference [ UNPIVOT [INCLUDE NULLS | EXCLUDE NULLS] ] ( value_column_name FOR name_column_name IN ( column_reference [ [ AS ] in_alias [, ...] ) ) [ [ AS ] alias [(column_alias, ...] ) ] ]

Parâmetros

com_subconsulta_nome_tabela

Tabela definida por uma subconsulta em Cláusula WITH.

table_name

Nome de uma tabela ou exibição.

alias

Nome alternativo temporário para uma tabela ou exibição. Um alias deve ser fornecido para uma tabela derivada de uma subconsulta. Em outras referências de tabela, os alias são opcionais. A palavra-chave AS é sempre opcional. Os alias de tabela oferecem um atalho conveniente para tabelas de identificação em outras partes de uma consulta, como a cláusula WHERE. Por exemplo:

select * from sales s, listing l where s.listid=l.listid
alias_coluna

Nome alternativo temporário para uma coluna em uma tabela ou exibição.

subconsulta

Uma expressão de consulta que avalia para uma tabela. A tabela existe somente pela duração da consulta e geralmente recebe um nome ou alias. No entanto, um alias não é necessário. Você também pode definir nomes de colunas para tabelas que derivam de subconsultas. Nomear aliases de coluna é importante quando você deseja participar dos resultados de subconsultas a outras tabelas e quando você deseja selecionar ou restringir essas colunas em outro lugar da consulta.

Uma subconsulta pode conter uma cláusula ORDER BY, mas essa cláusula poderá não ter qualquer efeito se uma cláusula LIMIT ou OFFSET também não estiver especificada.

PIVOT

Alterna a saída de linhas para colunas, com a finalidade de representar dados tabulares em um formato de fácil leitura. A saída é representada horizontalmente em várias colunas. PIVOT é semelhante a uma consulta GROUP BY com uma agregação, usando uma expressão agregada para especificar um formato de saída. Porém, diferente de GROUP BY, os resultados são retornados em colunas em vez de linhas.

Para obter exemplos que mostrem como consultar com PIVOT e UNPIVOT, consulte Exemplos de PIVOT e UNPIVOT.

UNPIVOT

O operador UNPIVOT transforma colunas de resultados de uma tabela de entrada ou resultados de consulta em linhas, para facilitar a leitura da saída. UNPIVOT combina os dados das colunas de entrada em duas colunas de resultado: uma coluna de nome e uma coluna de valor. A coluna name contém nomes de coluna da entrada, como entradas de linha. A coluna value contém valores das colunas de entrada, como resultados de uma agregação. Por exemplo, as contagens de itens em várias categorias.

Para obter exemplos que mostrem como consultar dados semiestruturados, como dados formatados em JSON, usando UNPIVOT, consulte Transformar colunas em linhas de objetos.

NATURAL

Define um junção que usa automaticamente todos os pares de colunas com nomes idênticos em duas tabelas como colunas de junção. Nenhuma condição explícita de junção é necessária. Por exemplo, se as tabelas CATEGORY e EVENT apresentam colunas com nome CATID, um junção natural dessas tabelas é um junção pelas colunas CATID.

nota

Se uma junção NATURAL for especificada mas não existirem pares de colunas com o mesmo nome nas tabelas a serem juntadas, a junção padrão da consulta usada será a junção cruzada.

join_type

Especifique um dos seguintes tipos de junção:

  • [INNER] JOIN

  • LEFT [OUTER] JOIN

  • RIGHT [OUTER] JOIN

  • FULL [OUTER] JOIN

  • CROSS JOIN

As junções cruzadas são junções não qualificadas; elas retornam o produto cartesiano das duas tabelas.

As junções internas e externas são junções qualificadas. Elas podem ser qualificadas implicitamente (em junções naturais); com a sintaxe ON ou USING na cláusula FROM; ou com a condição de cláusula WHERE.

Uma junção interna retorna somente linhas correspondentes, com base na condição de junção ou na lista de colunas de junção. Uma junção externa retorna todas as linhas que a junção interna equivalente deve retornar e linhas não correspondentes da tabela "esquerda", da tabela "direita" ou de ambas. A tabela esquerda é a primeira tabela listada, e a tabela direita é a segunda tabela listada. As linhas não correspondentes contêm valores NULL para preencher lacunas entre as colunas resultantes.

ON condição_junção

Tipo de especificação de junção em que as colunas a serem juntadas são exibidas como uma condição que acompanha a palavra-chave ON. Por exemplo:

sales join listing on sales.listid=listing.listid and sales.eventid=listing.eventid
USING ( coluna_junção [, ...] )

Tipo de especificação de junção em que as colunas a serem juntadas estão listadas entre parênteses. Se várias colunas a serem juntadas forem especificadas, elas serão separadas por vírgulas. A palavra-chave USING deve preceder a lista. Por exemplo:

sales join listing using (listid,eventid)

Observações de uso

Colunas de junção devem ter tipos de dados comparáveis.

Uma junção NATURAL ou USING retém somente um de cada par de colunas de junção no conjunto de resultados intermediário.

Uma junção com a sintaxe ON retém ambas as colunas de junção em seu conjunto de resultados intermediário.

Consulte também Cláusula WITH.