SQLite - Clausola UNION
SQLite UNION la clausola / operatore viene utilizzata per combinare i risultati di due o più istruzioni SELECT senza restituire righe duplicate.
Per utilizzare UNION, ogni SELECT deve avere lo stesso numero di colonne selezionate, lo stesso numero di espressioni di colonna, lo stesso tipo di dati e devono avere lo stesso ordine, ma non devono essere della stessa lunghezza.
Sintassi
Di seguito è riportata la sintassi di base di UNION.
SELECT column1 [, column2 ]
FROM table1 [, table2 ]
[WHERE condition]
UNION
SELECT column1 [, column2 ]
FROM table1 [, table2 ]
[WHERE condition]
Qui la condizione data potrebbe essere qualsiasi espressione data in base alle tue esigenze.
Esempio
Considera le seguenti due tabelle, (a) tabella AZIENDA come segue:
sqlite> select * from COMPANY;
ID NAME AGE ADDRESS SALARY
---------- -------------------- ---------- ---------- ----------
1 Paul 32 California 20000.0
2 Allen 25 Texas 15000.0
3 Teddy 23 Norway 20000.0
4 Mark 25 Rich-Mond 65000.0
5 David 27 Texas 85000.0
6 Kim 22 South-Hall 45000.0
7 James 24 Houston 10000.0
(b) Un'altra tabella è DEPARTMENT come segue:
ID DEPT EMP_ID
---------- -------------------- ----------
1 IT Billing 1
2 Engineering 2
3 Finance 7
4 Engineering 3
5 Finance 4
6 Engineering 5
7 Finance 6
Ora uniamo queste due tabelle usando l'istruzione SELECT insieme alla clausola UNION come segue:
sqlite> SELECT EMP_ID, NAME, DEPT FROM COMPANY INNER JOIN DEPARTMENT
ON COMPANY.ID = DEPARTMENT.EMP_ID
UNION
SELECT EMP_ID, NAME, DEPT FROM COMPANY LEFT OUTER JOIN DEPARTMENT
ON COMPANY.ID = DEPARTMENT.EMP_ID;
Questo produrrà il seguente risultato.
EMP_ID NAME DEPT
---------- -------------------- ----------
1 Paul IT Billing
2 Allen Engineering
3 Teddy Engineering
4 Mark Finance
5 David Engineering
6 Kim Finance
7 James Finance
La clausola UNION ALL
L'operatore UNION ALL viene utilizzato per combinare i risultati di due istruzioni SELECT comprese le righe duplicate.
Le stesse regole che si applicano a UNION si applicano anche all'operatore UNION ALL.
Sintassi
Di seguito è riportata la sintassi di base di UNION ALL.
SELECT column1 [, column2 ]
FROM table1 [, table2 ]
[WHERE condition]
UNION ALL
SELECT column1 [, column2 ]
FROM table1 [, table2 ]
[WHERE condition]
Qui la condizione data potrebbe essere qualsiasi espressione data in base alle tue esigenze.
Esempio
Ora, uniamo le due tabelle sopra menzionate nella nostra istruzione SELECT come segue:
sqlite> SELECT EMP_ID, NAME, DEPT FROM COMPANY INNER JOIN DEPARTMENT
ON COMPANY.ID = DEPARTMENT.EMP_ID
UNION ALL
SELECT EMP_ID, NAME, DEPT FROM COMPANY LEFT OUTER JOIN DEPARTMENT
ON COMPANY.ID = DEPARTMENT.EMP_ID;
Questo produrrà il seguente risultato.
EMP_ID NAME DEPT
---------- -------------------- ----------
1 Paul IT Billing
2 Allen Engineering
3 Teddy Engineering
4 Mark Finance
5 David Engineering
6 Kim Finance
7 James Finance
1 Paul IT Billing
2 Allen Engineering
3 Teddy Engineering
4 Mark Finance
5 David Engineering
6 Kim Finance
7 James Finance