Clausola Union
Scorri per mostrare il menu
Hai attirato l'attenzione di un cliente che necessita di query SQL. Prima di approfondire i JOINs, imparerai la clausola UNION, fondamentale per combinare più tabelle.
UNION in SQL viene utilizzato per combinare i risultati di due o più query SELECT in un unico set di risultati. Permette di unire le righe di più query in un unico set di dati risultante.
Ecco alcuni aspetti importanti da conoscere sull'utilizzo di UNION:
-
Numero e ordine delle colonne: tutte le query combinate con
UNIONdevono avere lo stesso numero di colonne nello stesso ordine; -
Tipi di dati: le colonne in ciascuna query devono avere tipi di dati compatibili;
-
Righe uniche: per impostazione predefinita,
UNIONrimuove le righe duplicate. UtilizzaUNION ALLse desideri mantenere i duplicati.
Per una migliore comprensione di come combinare correttamente le tabelle utilizzando la clausola UNION, è stata introdotta una tabella aggiuntiva che contiene informazioni sui contractors.
Qui non ci sono molte informazioni, solo first_name, last_name ed email.
Si può notare che questa tabella presenta delle somiglianze con la tabella employees. Utilizzando la clausola UNION, è possibile combinare queste due tabelle per, ad esempio, visualizzare un elenco di tutti i nomi e cognomi di employees e contractors coinvolti nell'azienda.
Per fare ciò, si utilizza la clausola UNION:
12345678(SELECT employee_id as id, first_name, last_name FROM employees) UNION (SELECT contractor_id as id, first_name, last_name FROM contractors) ORDER BY id
Sono presenti due query che restituiscono ciascuna tre colonne con gli stessi tipi di dati. L'obiettivo è visualizzare Id, first_name e last_name di tutte le persone dell'azienda. La colonna Id è stata anche rinominata affinché entrambe le query abbiano gli stessi nomi di colonna.
UNION combina i risultati di queste query, rimuovendo i duplicati (anche se in questo caso non ce ne sono).
Infine, i risultati sono ordinati per Id utilizzando ORDER BY.
I risultati sono ordinati per Id, che è una colonna comune in entrambe le tabelle.
Dopo aver utilizzato UNION, si ottiene una "singola query estesa" che può essere ulteriormente manipolata con clausole come ORDER BY.
Non è possibile utilizzare direttamente WHERE o GROUP BY con tabelle combinate tramite UNION. Per applicare queste clausole, è necessario utilizzare una sottoquery nella sezione FROM. Ecco un esempio di come farlo:
123456789SELECT id, first_name, last_name FROM ( SELECT employee_id AS id, first_name, last_name FROM employees UNION SELECT contractor_id AS id, first_name, last_name FROM contractors ) AS combined WHERE first_name = 'Jane'
Utilizzare una sottoquery nella sezione FROM offre maggiore flessibilità! All'inizio può sembrare complicato, ma padroneggiare questa tecnica renderà la scrittura di query complesse molto più semplice.
1. Quali requisiti devono soddisfare i result set per essere combinati utilizzando UNION?
2. Come tratta le righe duplicate la clausola UNION per impostazione predefinita?
Grazie per i tuoi commenti!
Chieda ad AI
Chieda ad AI
Chieda pure quello che desidera o provi una delle domande suggerite per iniziare la nostra conversazione