Clausola FROM - Amazon Redshift

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Clausola FROM

La clausola FROM in una query elenca i riferimenti di tabella (tabelle, viste e sottoquery) da cui vengono selezionati i dati. Se sono elencati più riferimenti tabella, è necessario unire le tabelle, utilizzando la sintassi appropriata nella clausola FROM o nella clausola WHERE. Se non vengono specificati criteri di join, il sistema elabora la query come cross-join (prodotto cartesiano).

Sintassi

FROM table_reference [, ...]

dove table_reference è una delle opzioni seguenti:

with_subquery_table_name [ table_alias ] table_name [ * ] [ table_alias ] ( subquery ) [ table_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 [, ...] ) ) [ table_alias ] table_reference UNPIVOT [ INCLUDE NULLS | EXCLUDE NULLS ] ( value_column_name FOR name_column_name IN ( column_reference [ [ AS ] in_alias ] [, ...] ) ) [ table_alias ] UNPIVOT expression AS value_alias [ AT attribute_alias ]

L'opzione table_alias può essere utilizzato per assegnare nomi temporanei a tabelle e riferimenti a tabelle complessi e, se lo si desidera, anche alle relative colonne, come segue:

[ AS ] alias [ ( column_alias [, ...] ) ]

Parametri

with_subquery_table_name

Tabella definita da una sottoquery nella Clausola WITH.

table_name

Nome di una tabella o vista.

alias

Nome alternativo temporaneo per una tabella o vista. L'alias è obbligatorio per una tabella derivata da una sottoquery. In altri riferimenti di tabella, gli alias sono facoltativi. La parola chiave AS è sempre facoltativa. Gli alias di tabella forniscono una comoda scelta rapida per identificare le tabelle in altre parti di una query, come nella clausola WHERE. Ad esempio:

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

Un'espressione semplice che restituisce un valore.

subquery

Espressione della query che restituisce una tabella. La tabella esiste solo per la durata della query e in genere le viene assegnato un nome o un alias; tuttavia l'alias non è obbligatorio. Puoi anche definire i nomi delle colonne per le tabelle che derivano da sottoquery. L'assegnazione degli alias alle colonne è importante quando vuoi unire i risultati delle sottoquery ad altre tabelle e quando vuoi selezionare o vincolare tali colonne altrove nella query.

Una sottoquery può contenere una clausola ORDER BY, ma questa potrebbe non avere alcun effetto se non viene specificata una clausola LIMIT o OFFSET.

NATURAL

Definisce un join che utilizza automaticamente tutte le coppie di colonne con lo stesso nome nelle due tabelle come colonne di unione. La condizione di join esplicita non è obbligatoria. Ad esempio, se le tabelle CATEGORY ed EVENT hanno entrambe le colonne denominate CATID, un join naturale di tali tabelle è un join sulle rispettive colonne CATID.

Nota

Se viene specificato un join NATURAL ma non esistono coppie di colonne con nome identico nelle tabelle da unire, la query viene impostata automaticamente su un cross-join.

join_type

Specifica uno dei seguenti tipi di join:

  • [INNER] JOIN

  • LEFT [OUTER] JOIN

  • RIGHT [OUTER] JOIN

  • FULL [OUTER] JOIN

  • CROSS JOIN

I cross-join sono join non qualificati; restituiscono il prodotto cartesiano delle due tabelle.

I join inner e outer sono join qualificati. Sono qualificati in modo implicito (in join naturali) con la sintassi ON o USING nella clausola FROM o con una condizione della clausola WHERE.

Un inner join restituisce solo le righe corrispondenti, in base alla condizione di join o all'elenco delle colonne di join. Un outer join restituisce tutte le righe che l'inner join equivalente restituirebbe, più le righe non corrispondenti dalla tabella "left", dalla tabella "right" o da entrambe le tabelle. La tabella di sinistra è la tabella elencata per prima e la tabella di destra è la seconda tabella nell'elenco. Le righe non corrispondenti contengono valori NULL per riempire gli spazi vuoti nelle colonne di output.

ON join_condition

Tipo di specifica del join in cui le colonne di unione vengono dichiarate come una condizione che segue la parola chiave ON. Ad esempio:

sales join listing on sales.listid=listing.listid and sales.eventid=listing.eventid
USING ( join_column [, ...] )

Tipo di specifica del join in cui le colonne di unione vengono elencate tra parentesi. Se vengono specificate più colonne di unione, queste sono delimitate da virgole. La parola chiave USING deve precedere l'elenco. Per esempio:

sales join listing using (listid,eventid)
PIVOT

Ruota l'output da righe a colonne, allo scopo di rappresentare i dati tabulari in un formato di facile lettura. L'output è rappresentato orizzontalmente su più colonne. PIVOT è simile a una query GROUP BY con un'aggregazione, utilizzando un'espressione aggregata per specificare un formato di output. Tuttavia, a differenza di GROUP BY, i risultati vengono restituiti in colonne anziché in righe.

Per gli esempi di query con PIVOT e UNPIVOT consulta Esempi PIVOT e UNPIVOT.

UNPIVOT

Rotazione delle colonne in righe con UNPIVOT: l'operatore trasforma le colonne dei risultati, da una tabella di input o dai risultati di una query, in righe, per rendere l'output più facile da leggere. UNPIVOT combina i dati delle colonne di input in due colonne di risultato: una colonna del nome e una colonna di valore. La colonna del nome contiene i nomi delle colonne dell'input, come voci di riga. La colonna dei valori contiene i valori delle colonne di input, ad esempio i risultati di un'aggregazione. Ad esempio, il numero di articoli in varie categorie.

Scompattamento degli oggetti con UNPIVOT (SUPER): è possibile eseguire l'unpivot degli oggetti, dove espressione è un'espressione SUPER che si riferisce a un altro elemento della clausola FROM. Per ulteriori informazioni, consulta Nidificazione di oggetti. Contiene anche esempi che mostrano come interrogare dati semistrutturati, ad esempio dati in formato JSON.

Note per l'utilizzo

Le colonne di unione devono avere tipi di dati comparabili.

Un join NATURAL o USING conserva solo una di ciascuna coppia di colonne di unione nel set di risultati intermedi.

Un join con la sintassi ON mantiene entrambe le colonne di unione nel set di risultati intermedi.

consultare anche Clausola WITH.