Sentència JOIN en SQL

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

Diagrama de Venn representant el Left Join, entre les taules A i B, d’una sentència SQL

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

diagrama de Venn representant el Left Join, entre les taules A i B, afegint una condició on les claus de B són nul·les

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

Diagrama de Venn representant el Right Join, entre les taules A i B, d’una sentència SQL

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 Departament
Cognom IDDepartamento NombreDepartamento IDDepartamento
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

Diagrama de Venn Representant el dret d’Ingrés, Entre les Taules a i B, afegint una condició on les claus de per nul·les

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 Departament
Cognom IDDepartamento NombreDepartamento IDDepartamento
sobre sobre

Màrqueting

35

Ingrés Equivalència Entre esquerra i dreta JOINEditar

combinació esquerra Equivalent a el dret d’Ingrés anterior

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 Empleat
NombreDepartamento IDDepartamento Cognom IDDepartamento
Màrqueting

35

sobre més

combinació completa (Full combinació externa) Edita

Diagrama de Venn REPRESENTANT EL completa d’Ingrés, Entre les Taules a i B, una Sentència de SQL

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

Steinberg

33

Enginyeria

33

31

Empleat Departament
Cognom IDDepartamento NombreDepartamento IDDepartamento
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

Diagrama de Venn REPRESENTANT EL completa d’Ingrés, Entre les Taules A i B, afegint Condicions On la clau d’o la d’B per nul·les

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 Departament
Cognom IDDepartamento NombreDepartamento IDDepartamento
Gaspar

36

sobre sobre
sobre sobre

Màrqueting

35

Deixa un comentari

L'adreça electrònica no es publicarà. Els camps necessaris estan marcats amb *