Questa operazione non è richiesta da un record in una tabella per avere un record record. Il record viene mantenuto nella tabella combinata sebbene non vi sia corrispondente nell’altra tabella.
Esistono tre tipi di combinazioni esterne, il join sinistro, il giusto join e il full join, dove vengono presi tutti i record Dalla tabella a sinistra o tutta la tabella destra o tutti i record o tutti i record rispettivamente.
Jodeditar di sinistra
Il risultato di questa operazione contiene sempre tutti i record nella tabella a sinistra (la prima tabella menzionata nella query), indipendentemente dal fatto che vi sia un record corrispondente nella tabella a destra.
il join a sinistra dichiarazione restituisce la coppia di tutti i valori della tabella sinistra con i valori della tabella destra corrispondente, se ci sono o restituire un valore null nullo nei campi del ta Blah giusto quando non c’è corrispondenza.
A differenza del risultato presentato negli esempi di combinazione interna in cui il dipendente non è stato dimostrato il cui dipartimento non esisteva, nel seguente esempio, saranno presentati dipendenti con il loro rispettivo reparto, e inoltre un dipendente il cui dipartimento non esiste.
Il dipendente che non ha un appartamento si trova nella zona gialla del diagramma sulla destra, mentre i dipendenti con dipartimento sono nella zona arancione, all’incrocio di A e B.
Esempio del join sinistro per la combinazione esterna:
SELECT * FROM empleado LEFT OUTER JOIN departamento ON empleado.IDDepartamento = departamento.IDDepartamento
dipendente | Dipartimento | |||||
---|---|---|---|---|---|---|
Cognome | IDDEpartment | Nome | IDDEpartment | |||
33 | 33 | 33 | 33 | |||
Andrade | 31 | 31 | vendite | 31 | ||
róbinson | 34 | Produzione | 34 | |||
zolano | 34 | 34 | GASPAR | 36 | 36 | NULL | null |
steinberg | 33 | Ingegneria | 33 |
Sinistra Iscriviti escludendo l’intersezione
Se si desidera visualizzare solo i record della prima tabella che non hanno corrispondenti nel secondo, è possibile aggiungere la condizione n Adeguato nella clausola WHERE. Questo ci darà impiegati che non sono assegnati a nessun reparto, che nel diagramma a destra sono rappresentati in giallo.
SELECT * FROM empleado LEFT OUTER JOIN departamento ON empleado.IDDepartamento = departamento.IDDepartamento WHERE departamento.IDDepartamento IS NULL
Dipendente | Dipartimento | Cognome | IDDEpartment | Nome | IDDEpartment |
---|---|---|---|---|
GASPAR | 36 | null |
Jorsi esterni destro o jodeditar destro
Questa operazione è un’immagine riflessa di quella precedente; Il risultato di questa operazione contiene sempre tutti i record nella tabella a destra (la seconda tabella menzionata nella query), indipendentemente dal fatto che esista o meno o meno un record corrispondente nella tabella a sinistra. Il Frase a destra Outer Join Restituisce tutti i valori della tabella destra con i valori della tabella sinistra corrispondente, se presente, o restituire un valore null null nei campi nella tabella sinistra quando non c’è alcuna corrispondenza.
Nel diagramma a destra, i dipartimenti che non hanno dipendenti sono nell’area verde mentre i dipartimenti dei dipendenti sono nella zona arancione, all’incrocio di A e B.
Ejemplo del diritto Join para la combinación externa:
SELECT * FROM empleado RIGHT OUTER JOIN departamento ON empleado.IDDepartamento = departamento.IDDepartamento
Empleado |
||
---|---|---|
Apellido |
||
Zolano
34 PRODUCCIÓN 34 |
||
Jordan
33 Ingeniería 33 |
||
Robinson
34 PRODUCCIÓN 34 |
||
Steinberg
33 Ingeniería 33 |
||
Andrade
31 Ventas 31 |
||
sopra | sopra
catalogo Cadeo 35 |
En Este Caso el Area di Mercadeo fue presentada en los resultados, aunque intenso o Hay empleados registrados en dicha Area.
destro Registrati excluyendo la intersecciónEditar
si se quieren Visualizza los registros solista Tabla de la Departamento de que tengan o correspondientes en la Tabla di Empleado, è Puede agregar la adecuada condición en la clausula Dove. Nos secondo esto que los departamentos o Tengan asignados ningún empleado. En el Diagrama de la derecha, esto se representa en verde.
SELECT * FROM empleado RIGHT OUTER JOIN departamento ON empleado.IDDepartamento = departamento.IDDepartamento WHERE empleado.IDDepartamento IS NULL
Empleado |
||
---|---|---|
Apellido |
||
sopra | sopra
Mercadeo 35 |
equivalencia entre LEFT JOIN y Destra JOINEditar
Hay una totale equivalencia entre las que usan sentencias LEFT JOIN y las que usan Partecipa destro. Todo lo que se puede hacer con Uno se puede hacer con el otro. Cambiando la prospettiva di Do es la Tabla izquierda y sentito es la Tabla derecha, y teniendo cuidado con las condiciones, è Puede hacer la sentencia Equivalente.
Por ejemplo, hagamos el destro Registrati anteriore pero Esta vez usando Sinistra Aderire. Proprio Partecipa en el anteriore è consideraba Empleado Tabla la la izquierda y la Tabla Departamento de la derecha. Para hacer un LEFT JOIN Equivalente cambiamos di perspectiva y “volteamos” Las Tablas. Consideremos Ahora la Tabella Departamento de la izquierda y la Tabella de la derecha Empleado. Podemos obtener exactamente el mismo resultado con la sentencia siguiente:
SELECT * FROM departamento LEFT OUTER JOIN empleado ON departamento.IDDepartamento = empleado.IDDepartamento WHERE empleado.IDEmpleado IS NULL
Departamento |
|||
---|---|---|---|
NombreDepartamento |
|||
Mercadeo
35 |
sopra | sopra |
Combinación completa (full outer join) Editar
Esta Operación Presenta los resultados de Tabla izquierda y aunque derecha o Tengan correspondencia alguna en l’Otra Tabla. La Tabla combinada contendrá, entonces, TODOS LOS registros de Ambas tablas y presentará valores nulos NULLS para registros che Pareja.
En el Diagrama de la derecha, el Area anaranjada representa los empleados que están Asociados un un Departamento, Area per Amarilla el los Empleados que están en ningún o Departamento, y el Area per los Verde que no Departamentos Tienen empleados.
Ejemplo di combinación externa completa:
SELECT * FROM empleado FULL OUTER JOIN departamento ON empleado.IDDepartamento = departamento.IDDepartamento
Empleado |
|||
---|---|---|---|
Apellido |
|||
Zolano
34 PRODUCCIÓN 34 |
|||
Jordan
33 Ingeniería 33 |
|||
Robinson
34 PRODUCCIÓN 34 |
|||
Gaspar
36 |
sopra | sopra | |
Andrade
31 Ventas |
|||
sopra | sopra
Mercadeo 35 |
Como se puede Notar, en Este Caso se encuentra el empleado Gaspar con valor nulo en su Area correspondiente, y se muestra además el departamento di MERCADEO con valor nulo en los empleados dell’ESA Area.
Algunos Sistemas de basi de datos o soportan Esta funcionalidad, pero Esta Puede ser emulada attraverso de las combinaciones di Tabla izquierda, Tabla derecha y de la sentencia di Union.
El mismo ejemplo Puede expresarse así:
SELECT * FROM empleado LEFT JOIN departamento ON empleado.IDDepartamento = departamento.IDDepartamento UNION SELECT * FROM empleado RIGHT JOIN departamento ON empleado.IDDepartamento = departamento.IDDepartamento
completa registrazione excluyendo la intersecciónEditar
E Lei è quieren Visualizza solista los registros de Las Tablas que o Tengan correspondencia en l’Otra, è pueden agregar las condiciones adecuadas en la clausula Dove.
En el Diagrama de la derecha, el Area amarilla representa los empleados que o están asignados a ningún Departamento, Mientras que el Area verde representa los departamentos que no empleados Tienen.
SELECT * FROM empleado FULL OUTER JOIN departamento ON empleado.IDDepartamento = departamento.IDDepartamento WHERE (empleado.IDDepartamento IS NULL) OR (departamento.IDDepartamento is NULL)
Empleado |
|||
---|---|---|---|
Apellido |
|||
Gaspar
36 |
sopra | sopra | |
sopra | sopra
Mercadeo 35 |