Union in SQL
Nel linguaggio SQL l'operatore UNION mi permette di unire i valori di due o più colonne in un'unica colonna.
SELECT att1 FROM tab
UNION [ALL]
SELECT att2 FROM tab
Dove att1 e att2 sono gli attributi (colonne) mentre tab è la tabella.
Gli attributi possono anche trovarsi in tabelle diverse.
Il risultato dell'operazione UNION è una colonna contenente l'unione di tutti i valori dell'attributo att1 e att2.
Nota. Gli attributi possono anche essere più di uno per tabella. L'importante è che ci sia un numero uguale di attributi a sinistra e a destra e il dominio dei dati sia compatibile.
L'operatore UNION è uno degli operatori insiemistici del linguaggio SQL.
Di default l'unione esclude i valori duplicati dal risultato.
Per includere i valori duplicati devo aggiungere la clausola ALL.
Nota. Nel risultato finale dell'interrogazione il nome delle colonne è definito dai nomi del primo operando (att1). E' opportuno tenerlo a mente perché non sempre identifica l'informazione. A volte è preferibile modificarlo con un alias.
Un esempio pratico
Ho una tabella Studenti
Voglio creare una colonna con tutte le città di nascita e di residenza degli studenti escludendo le duplicazioni.
Per farlo utilizzo l'operatore UNION
SELECT Nascita AS Città FROM Studenti
UNION
SELECT Residenza From Studenti
Il risultato finale è la lista delle città senza valori duplicati.
Nota. Nella SELECT ho aggiunto un alias (AS) nella prima selezione per cambiare il nome della colonna da Nascita a Città. L'ho fatto perché nella Union il nome delle colonne è definito dalla prima interrogazione. Senza l'alias la tabella del risultato si sarebbe chiamata Nascita e non avrebbe comunicato bene l'informazione che contiene ossia le città.
Esempio 2
Per ottenere la lista delle città con i valori duplicati, utilizzo la UNION ALL
SELECT Nascita AS Città FROM Studenti
UNION ALL
SELECT Residenza From Studenti
In questo caso il risultato è la lista delle città con tutti i valori duplicati.
E così via.