La maggior parte delle query SQL utilizza una singola istruzione che restituisce dati da una o più tabelle. SQL consente inoltre di eseguire più query separate contemporaneamente e visualizzare il risultato come un singolo set di dati. Tali query combinate vengono solitamente chiamate join o query composte.
Le query SQL vengono combinate utilizzando l'operatore UNION. Per fare ciò, è necessario specificare ciascuna richiesta SELECT e inserire la parola chiave UNION tra di loro. Non esiste alcun limite al numero di utilizzi dell'operatore UNION in una query generale. Nella sezione precedente abbiamo notato che MS Access non ha la capacità di creare un'unione esterna completa, ora vedremo come ciò può essere ottenuto tramite l'operatore UNION.
Run SQLSELECT *
FROM Sumproduct
LEFT JOIN Sellers2
ON Sumproduct.City = Sellers2.City
UNION
SELECT *
FROM Sumproduct
RIGHT JOIN Sellers2
ON Sumproduct.City = Sellers2.City
Vediamo che la query mostra sia tutte le colonne della prima tabella che della seconda, indipendentemente dal fatto che tutti i record abbiano controparti in un'altra tabella.
Vale anche la pena notare che in molti casi, invece di UNION, possiamo utilizzare la clausola WHERE con molte condizioni e ottenere un risultato simile. Tuttavia, grazie a UNION, i record appaiono più concisi e chiari.
È inoltre necessario seguire alcune regole quando si scrivono query combinate:
Una query con UNION rimuove automaticamente tutte le righe duplicate dal set di risultati della query (in altre parole, si comporta come una clausola WHERE con più condizioni in una singola istruzione SELECT). Questo è il comportamento predefinito dell'operatore UNION, ma possiamo cambiarlo se vogliamo. Per questo dovremmo usare l'operatore UNION ALL invece di UNION.
I risultati dell'istruzione SELECT vengono ordinati utilizzando l'istruzione ORDER BY. Quando si combinano le query utilizzando UNION, è possibile utilizzare solo una clausola ORDER BY e deve essere inserita nell'ultima istruzione SELECT. In effetti, in pratica, non ha molto senso ordinare parte dei risultati in un ordine e l'altra parte in un altro. Pertanto non sono consentite più frasi ORDER BY.