Mitjançant aquesta operació no es requereix que un registre en una taula tingui un registre relacionat en l’altra taula. El registre és mantingut en la taula combinada encara que no existeixi el corresponent en l’altra taula.
Hi ha tres tipus de combinacions externes, el Left Join, el Right Join i el Full Join, on es prenen tots els registres de la taula de l’esquerra, o tots els de la taula dreta, o tots els registres respectivament.
LEFT JOINEditar
El resultat d’aquesta operació sempre conté tots els registres de la taula de l’esquerra (la primera taula que s’esmenta en la consulta), independentment de si hi ha un registre corresponent a la taula de la dreta.
la sentència LEFT JOIN retorna la parella de tots els valors de la taula esquerra amb els valors de la taula de la dreta corresponents, si n’hi ha, o retorna un valor nul NULL en els camps de la ta bla dreta quan no hi hagi correspondència.
A diferència de l’resultat presentat en els exemples de combinació interna on no es mostrava l’empleat el departament no existia, en el següent exemple es presentaran els empleats amb el seu respectiu departament, i addicionalment es presenta un empleat el departament no existeix.
l’empleat que no té departament es troba a l’àrea groga de l’diagrama de la dreta, mentre que els empleats amb departament són a l’àrea ataronjada, en la intersecció de a i B.
Exemple d’left join per a la combinació externa:
SELECT * FROM empleado LEFT OUTER JOIN departamento ON empleado.IDDepartamento = departamento.IDDepartamento
Empleat | Departament | |||
---|---|---|---|---|
Cognom | IDDepartamento | NombreDepartamento | IDDepartamento | |
Jordà | 33 | Enginyeria | 33 | |
Andrade | 31 | Vendes | 31 | |
Róbinson | 34 | Producció | 34 | |
Zolano | 34 | Producció | 34 | |
Gaspar | 36 | NULL | NULL | |
Steinberg | 33 | Enginyeria | 33 |
LEFT JOIN excloent la intersecciónEditar
Si es volen mostrar només els registres de la primera taula que no tinguin corresponents a la segona, es pot afegir la Condició n adequada en la clàusula WHERE. Això ens donarà els empleats que no estiguin assignats a cap departament, que en el diagrama de la dreta es representen en groc.
SELECT * FROM empleado LEFT OUTER JOIN departamento ON empleado.IDDepartamento = departamento.IDDepartamento WHERE departamento.IDDepartamento IS NULL
Empleat | Departament | |||
---|---|---|---|---|
Cognom | IDDepartamento | NombreDepartamento | IDDepartamento | |
Gaspar | 36 | NULL | NULL |
RIGHT OUTER JOIN o RIGHT JOINEditar
Aquesta operació és una imatge reflecteix de l’anterior; el resultat d’aquesta operació sempre conté tots els registres de la taula de la dreta (la segona taula que s’esmenta en la consulta), independentment de si existeix o no un registre corresponent a la taula de l’esquerra.
La sentència RIGHT OUTER JOIN retorna tots els valors de la taula dreta amb els valors de la taula de l’esquerra corresponents, si n’hi ha, o retorna un valor nul NULL en els camps de la taula esquerra quan no hi hagi correspondència.
En el diagrama de la dreta, els departaments que no tenen empleats estan a l’àrea verda mentre que els departaments amb empleats estan en l’àrea ataronjada, en la intersecció de A i B.
Example de dret d’entrada paràgraf La Combinació externa:
SELECT * FROM empleado RIGHT OUTER JOIN departamento ON empleado.IDDepartamento = departamento.IDDepartamento
Empleat |
||
---|---|---|
Cognom |
||
Zolano
34 PRODUCCIÓ 34 |
||
Jordan
33 Enginyeria 33 |
||
Robinson
34 PRODUCCIÓ 34 |
||
Steinberg
33 Enginyeria 33 |
||
Andrade
31 Vendes 31 |
||
més | més
catàleg Cadeo 35 |
En Aquest Cas l’Àrea de Màrqueting SER presentada en els resultats, ENCARA intensa o fenc Empleats Registrats en dita Àrea.
dret d’Ingrés excloent la intersecciónEditar
si es Volen Mostra els registres en solitari de la Taula Departament de Que Tinguin o corresponents a la Taula d’Empleat, és la Adequada per contactar Pot de l’Condició en la clàusula On. Ens segon Això que els departaments o Tinguin ASSIGNATS cap empleat. En el diagrama de la dreta, Això Es Representa en verd.
SELECT * FROM empleado RIGHT OUTER JOIN departamento ON empleado.IDDepartamento = departamento.IDDepartamento WHERE empleado.IDDepartamento IS NULL
Empleat |
||
---|---|---|
Cognom |
||
sobre | sobre
Màrqueting 35 |
Ingrés Equivalència Entre esquerra i dreta JOINEditar
Hi ha Una total d’equivalència Entre les sentències que UTILITZEN combinació esquerra i les Que UTILITZEN Uneix-te a la dreta. Tot El Que es pot Fer amb un es pot Fer amb L’Altre. Canviant la perspectiva de És La Taula Esquerra i sentit És La Taula continua dreta, i tenint cura amb les Condicions, és Pot de l’Fer la Sentència Equivalent.
Per Exemple, Fem el dret d’Ingrés anterior Però Aquesta Vegada Usant esquerra unir-se. Just membre En l’anterior és considerava Empleat Taula la l’Esquerra i La Taula Departament de la Dreta. Per Fer ONU combinació esquerra Equivalent Canviem de Perspectiva I “voltegem” Les Taules. Considerem Ara La Taula Departament d’Esquerra i La Taula de la Dreta Empleat. Podem Obtenir exactament El Mateix m resultat amb la Sentència següent:
SELECT * FROM departamento LEFT OUTER JOIN empleado ON departamento.IDDepartamento = empleado.IDDepartamento WHERE empleado.IDEmpleado IS NULL
Departament |
|||
---|---|---|---|
NombreDepartamento |
|||
Màrqueting
35 |
sobre | més |
combinació completa (Full combinació externa) Edita
This Operació Presenta els resultats d’Taula Taula esquerra dreta i ENCARA o Tinguin correspondència Alguna en l’altra Taula. La Taula COMBINADA contindrà, then, Tots Els registres de dues Taules I presentarà Valors nuls els nuls registres paràgraf que parella.
En el diagrama de la dreta, l’Àrea ataronjada Representa els Empleats que estan associats a l’ONU departament, àrea d’Amarilla eL Empleats els que estan en cap o departament, i el verd per a la zona dels que no Empleats Departaments Tenen.
Example de Combinació externa completa:
SELECT * FROM empleado FULL OUTER JOIN departamento ON empleado.IDDepartamento = departamento.IDDepartamento
Empleat |
|||
---|---|---|---|
Cognom |
|||
Zolano
34 PRODUCCIÓ 34 |
|||
Jordan
33 Enginyeria 33 |
|||
Robinson
34 PRODUCCIÓ 34 |
|||
Gaspar
36 |
sobre | sobre | |
Andrade
31 Vendes |
|||
sobre | sobre
Màrqueting 35 |
Com es pot Notar, en Aquest Cas eS Troba l’empleat Gaspar amb valor nul en la seva Àrea Corresponent, I es Mostra: a més el departament de Màrqueting amb valor nul en els Empleats de l’ESA Àrea.
ALGUNS Sistemes de bases de dades o suporten This Funcionalitat, Però This Pot Ser emulada a través de les Combinacions de Taula Esquerra, Taula continua dreta i de la Sentència de la Unió Unió.
El mateix example Pot de l’expressar Així:
SELECT * FROM empleado LEFT JOIN departamento ON empleado.IDDepartamento = departamento.IDDepartamento UNION SELECT * FROM empleado RIGHT JOIN departamento ON empleado.IDDepartamento = departamento.IDDepartamento
completa Ingrés excloent la intersecciónEditar
I Ella és Volen Mostra Només Els registres de les Taules Que o Tinguin correspondència en l’Altra, es poden busques? Les Condicions adequades en la clàusula On.
En el diagrama de la dreta, l’Àrea groga representa Els Empleats Que o ESTAN aSSIGNATS a cap departament, mENTRE que L’Àrea verda Representa els departaments que no Empleats Tenen.
SELECT * FROM empleado FULL OUTER JOIN departamento ON empleado.IDDepartamento = departamento.IDDepartamento WHERE (empleado.IDDepartamento IS NULL) OR (departamento.IDDepartamento is NULL)
Empleat |
|||
---|---|---|---|
Cognom |
|||
Gaspar
36 |
sobre | sobre | |
sobre | sobre
Màrqueting 35 |