Clausola Union
Abbiamo attirato l'attenzione di un cliente che necessita di query SQL. Prima di approfondire i JOINs, impariamo la clausola UNION, fondamentale per combinare più tabelle.
Ecco alcuni aspetti importanti 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. UtilizzareUNION ALLse si desidera mantenere i duplicati.
Per comprendere meglio come combinare correttamente le tabelle utilizzando la clausola UNION, è stata introdotta una tabella aggiuntiva che contiene informazioni sui contractors.
Le informazioni presenti sono poche: solo first_name, last_name ed email.
Si può notare che questa tabella presenta 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 dipendenti e collaboratori 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
Analisi dettagliata del processo:
Sono presenti due query che restituiscono ciascuna tre colonne con gli stessi tipi di dati. L'obiettivo è visualizzare l'Id, il first_name e il last_name di tutte le persone presenti in azienda. Inoltre, la colonna Id è stata rinominata affinché entrambe le query abbiano gli stessi nomi di colonna.
Successivamente, si utilizza UNION per combinare i risultati di queste query, eliminando i duplicati (anche se in questo caso non ce ne sono).
Infine, i risultati vengono ordinati per Id tramite ORDER BY.
Nota
Si sta ordinando 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 procedere:
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'
L'utilizzo di una sottoquery nella sezione FROM offre maggiore flessibilità. Può sembrare complesso inizialmente, ma padroneggiare questa tecnica renderà la scrittura di query complesse molto più semplice.
1. Quali colonne sono richieste quando si utilizza la clausola UNION in SQL?
2. Come tratta la clausola UNION le righe duplicate 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
Awesome!
Completion rate improved to 4
Clausola Union
Scorri per mostrare il menu
Abbiamo attirato l'attenzione di un cliente che necessita di query SQL. Prima di approfondire i JOINs, impariamo la clausola UNION, fondamentale per combinare più tabelle.
Ecco alcuni aspetti importanti 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. UtilizzareUNION ALLse si desidera mantenere i duplicati.
Per comprendere meglio come combinare correttamente le tabelle utilizzando la clausola UNION, è stata introdotta una tabella aggiuntiva che contiene informazioni sui contractors.
Le informazioni presenti sono poche: solo first_name, last_name ed email.
Si può notare che questa tabella presenta 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 dipendenti e collaboratori 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
Analisi dettagliata del processo:
Sono presenti due query che restituiscono ciascuna tre colonne con gli stessi tipi di dati. L'obiettivo è visualizzare l'Id, il first_name e il last_name di tutte le persone presenti in azienda. Inoltre, la colonna Id è stata rinominata affinché entrambe le query abbiano gli stessi nomi di colonna.
Successivamente, si utilizza UNION per combinare i risultati di queste query, eliminando i duplicati (anche se in questo caso non ce ne sono).
Infine, i risultati vengono ordinati per Id tramite ORDER BY.
Nota
Si sta ordinando 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 procedere:
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'
L'utilizzo di una sottoquery nella sezione FROM offre maggiore flessibilità. Può sembrare complesso inizialmente, ma padroneggiare questa tecnica renderà la scrittura di query complesse molto più semplice.
1. Quali colonne sono richieste quando si utilizza la clausola UNION in SQL?
2. Come tratta la clausola UNION le righe duplicate per impostazione predefinita?
Grazie per i tuoi commenti!