Procedura: Creazione di join esterni (Visual Database Tools)
Per impostazione predefinita, in Progettazione query e Progettazione viste viene creato un inner join tra le tabelle. Le righe prive di corrispondenza nell'altra tabella vengono eliminate. Gli outer join restituiscono invece tutte le righe di almeno una delle tabelle o viste specificate nella clausola FROM, a condizione che tali righe soddisfino una delle condizioni di ricerca della clausola WHERE o HAVING. Se si desidera includere nel gruppo di risultati le righe di dati che non hanno una corrispondenza nella tabella in join, sarà possibile creare un outer join.
Durante la creazione di un outer join, l'ordine di inserimento delle tabelle nell'istruzione SQL (riflesso nel riquadro SQL) è significativo. La prima tabella aggiunta diventa la tabella di sinistra ("left") e la seconda diventa la tabella di destra ("right"). Non è invece significativo l'ordine effettivo in cui le tabelle sono visualizzate nel riquadro Diagramma. Quando si specifica un left outer join o un right outer join, si fa riferimento alla sequenza di inserimento delle tabelle nella query o all'ordine in cui compaiono nell'istruzione SQL nel riquadro SQL.
Per creare un outer join
Creare un join, automaticamente o manualmente. Per informazioni dettagliate, vedere Procedura: Unione di tabelle in modo automatico (Visual Database Tools) o Procedura: Unione di tabelle in modo manuale (Visual Database Tools).
Selezionare la linea di join nel riquadro Diagramma, quindi scegliere Seleziona tutte le righe da <nometabella> dal menu Progettazione query. Il comando da scegliere è quello relativo alla tabella contenente le righe supplementari da inserire.
Scegliere la prima tabella per creare un left outer join.
Scegliere la seconda tabella per creare un right outer join.
Scegliere entrambe le tabelle per creare un full outer join.
Quando si specifica un outer join, la linea di join verrà modificata automaticamente a indicare l'outer join.
Inoltre, l'istruzione SQL nel riquadro SQL verrà modificata in modo da riflettere la modifica del tipo di join, come mostrato nella seguente istruzione:
SELECT employee.job_id, employee.emp_id,
employee.fname, employee.minit, jobs.job_desc
FROM employee LEFT OUTER JOIN jobs ON
employee.job_id = jobs.job_id
Dato che l'outer join include le righe prive di corrispondenza, è possibile utilizzarlo per trovare le righe che violano vincoli di chiave esterna. Per eseguire questa operazione, è possibile creare un outer join, quindi aggiungere una condizione di ricerca che consenta di trovare le righe in cui la colonna chiave primaria della tabella a destra sia di tipo Null. L'outer join illustrato di seguito consente ad esempio di trovare nella tabella employee le righe a cui non corrisponde alcuna riga nella tabella jobs:
SELECT employee.emp_id, employee.job_id
FROM employee LEFT OUTER JOIN jobs
ON employee.job_id = jobs.job_id
WHERE (jobs.job_id IS NULL)
Vedere anche