Corsi on-line
Chiudi
Newsletter:
  • Seguici su Facebook
  • Seguici su Twitter
  • Seguici su Google+
  • Seguici via RSS
  • Seguici col tuo Smartphone

Usare le UNION per unire i risultati di due tabelle

Articolo scritto da Max Bossi

Il linguaggio SQL ci offre un modo piuttosto semplice per unire, all'interno della medesima SELECT, i risultati di due diverse tabelle.

Per ottenere tale risultato è necesario fare ricorso all'opertore UNION il quale effettuerà, appunto, l'unione dei risultati ottenuti interrogando le due tabelle.

(L'articolo continua più sotto...)

Si noti che affinchè possa essere utilizzato correttamente l'operatore UNION è necesario che:

Facciamo un esempio: poniamo di dover operare su un database di un'ipotetica agenzia viaggio e supponiamo che il nostro DB contenga due sole tabelle: Ora supponiamo che un nostro cliente ci chieda di conoscere indifferentemente le offerte degli hotel sia in Italia che in Europa:
SELECT nome, stelle, citta, nazione
FROM hotel_italia
UNION
SELECT nome, stelle, citta, nazione
FROM hotel_europa
Grazie a questa query otterremo un listato completo di tutti gli Hotel presenti nelle due tabelle:

nomestellecittanazione
Hotel Cavour4RomaIT
Hotel Miramare2CattolicaIT
Hotel Manzoni2MilanoIT
Hotel Espana3MadridES
Hotel Hilton5LondraUK
Hotel am Schlossgarten4StoccardaDE

Nota: è opportuno precisare che l'operatore UNION non mostra eventuali record duplicati (di default opera come se fosse una SELECT DISTINCT); qualora si desideri mostrare anche gli eventuali record duplicati (si pensi, per tornare al nostro esempio, ad un hotel presente sia nella tabella hotel_italia che in quella hotel_europa) sarà necessario utilizzare UNION ALL.

Ordinare e limitare i risultati derivanti dalla UNION

Si supponga che i risultati derivanti dall'utilizzo di UNION siano molteplici e di volerli limitare ad numero precisato. Come fare? Ecco una soluzione:

SELECT * FROM
(SELECT nome, stelle, citta, nazione FROM hotel_italia
UNION
SELECT nome, stelle, citta, nazione FROM hotel_europa)
AS hotel
ORDER BY stelle DESC LIMIT 10
In sostanza trattiamo i risultati derivanti dall'unione di due o più tabelle come se fossero la risultanza di un unica tabella, così facendo possiamo utilizzare i normali criteri di ordinamento e limite.

Corsi
Corso MS AccessCorso MS Access
Impara a creare e gestire database in maniera semplice e veloce. A partire da 39 €.
Corso MySQLCorso MySQL
Gestione del database open-source. A partire da 49 €.
Corso SQL e DatabaseCorso SQL e Database
Creazione e gestione di database relazionali. A partire da 39 €.
Vedi anche...
Annunci

Mr.Webmaster

Pubblicità
Chi Siamo
Contattaci
Collabora
Note Legali
© 2003 - 2012 Mr.Webmaster - Il portale dei Webmaster Italiani - Tutti i diritti riservati | Powered by IKIweb Internet Media S.r.l. - PIVA 02848390122