Anda di halaman 1dari 4

Tipos de Join en T-SQL Aunque esto no es propio del Transact sino del SQL en si, vamos a ver como

son los tipos de Joins que por cierto son muy tiles hasta imprescindibles para implementar nuestras consultas, ya entramos al campo de las consultas multitabla y se van a plantear un par de estas (que aunque sin l ica! como e"emplo para que puedan entender lo me"or posible como #uncionan los tipos de Join$ %n SQL tenemos tipos de Join que #uncionar&n en Transact, propio de 'S SQL Server, y que slo cambian ciertas partes de la sinta(is para los dem&s len ua"es o"o todos al #inal hacen lo mismo, las bases son i uales, tenemos ) tipos de Join (por de#inicin! los Joins *nternos o de +ombinacin interna (*nner Join! y los Joins %(ternos o +ombinacin e(terna (,uter Join! que a su ve- tienen sus di#erencias dentro de cada uno de ellos, se e(plicaran con e"emplos y lo m&s sencillo posible, no nos detendremos mucho en la sinta(is sino en como #uncionan y como se podr.an usar$ Tipos de Join/ 0$ *nternos (*nner Join! 1e %quivalencia (%qui 2 Join! 3atural (3atural 2 Join! +ru-ado (+ross 2 Join! %n s. mismo (Sel# 2 Join!

)$ %(ternos (,uter Join! 1e tabla *-quierda (Le#t ,uter Join! 1e tabla 1erecha (4i ht ,uter Join! +ombinacin completa (5ull ,uter Join!

+omen-aremos creando unas tablas simples$ Se usaran letras para que al hacer las me-clas no se con#unda y nmeros para que sean #&ciles de ubicar, de esta #orma se entender& que reali-a cada consulta$ +rear las tablas en SQL 'ana ement Studio en una 6ase de datos con el nombre de uia7sql$ (esta base de datos no esta normali-ada y tiene como ob"eto solo ser educativa! - Tabla0 (*dLetra, 8alor0! - Tabla) (*dLetra, 8alor)! - Tabla9 (*dLetra, 8alor9! - Tabla: (*dLetra, 8alor:! +di o/
CREATE CREATE CREATE CREATE TABLE TABLE TABLE TABLE Tabla1 Tabla2 Tabla3 Tabla (IdLetra (IdLetra (IdLetra (IdLetra varchar(5), varchar(5), varchar(5), varchar(5), Valor1 Valor2 Valor3 Valor int); int); int); int);

A re ar al unos valores para los e"emplos/ +di o/


I!"ERT I!"ERT I!"ERT I!"ERT I!"ERT I!"ERT I!T# I!T# I!T# I!T# I!T# I!T# TABLA1 TABLA1 TABLA1 TABLA1 TABLA1 TABLA1 VAL$E" VAL$E" VAL$E" VAL$E" VAL$E" VAL$E" (%A%,1); (%B%,2); (%C%,3); (%&%, ); (%E%,5); (%'%,();

I!"ERT I!T# TABLA2 VAL$E" (%A%,1)); I!"ERT I!T# TABLA2 VAL$E" (%B%,2));

I!"ERT I!"ERT I!"ERT I!"ERT I!"ERT I!"ERT I!"ERT I!"ERT I!"ERT I!"ERT I!"ERT I!"ERT I!"ERT I!"ERT I!"ERT I!"ERT I!"ERT I!"ERT

I!T# I!T# I!T# I!T# I!T# I!T# I!T# I!T# I!T# I!T# I!T# I!T# I!T# I!T# I!T# I!T# I!T# I!T#

TABLA2 TABLA2 TABLA2 TABLA2 TABLA3 TABLA3 TABLA3 TABLA3 TABLA3 TABLA3 TABLA3 TABLA TABLA TABLA TABLA TABLA TABLA TABLA

VAL$E" VAL$E" VAL$E" VAL$E" VAL$E" VAL$E" VAL$E" VAL$E" VAL$E" VAL$E" VAL$E" VAL$E" VAL$E" VAL$E" VAL$E" VAL$E" VAL$E" VAL$E"

(%C%,3)); (%&%, )); (%E%,5)); (%'%,()); (%A%,*); (%B%,+); (%C%,,); (%&%,1)); (%E%,11); (%'%,1))); (%-%,2))); (%A%,12); (%B%,13); (%C%,1 ); (%&%,15); (%E%,1(); (%.%,3))); (%I%, )));

;acer un S%L%+T a las tablas para e(aminar y comprender me"or los e"emplos$ Adem&s, en cada e"emplo hacer S%L%+T al mismo tiempo sobre las tablas involucradas para comparar el S%L%+T de las tablas con el resultado de las consultas de Join$ *33%4 J,*3 %l *nner Join permite combinar dos tablas mediante un campo en comn para hacer relaciones y consultar en este e"emplo vamos a utili-ar un *nner Join para unir las tablas 0 y ), 5unciona as./
"ELECT tabla/(ca01o 23e 23iere4 0o4trar) 'R#5 Tabla1 (Alia4 6o1cional6) I!!ER 7#I! Tabla2 (Alia4 8 o1cional6) #! Tabla1(o Alia4)/!o0breCa01o(ca01o en co09n) :,;,< (co01araci=n) Alia4)/!o0breCa01o(ca01o en co09n)

Tabla2(o

Se ve medio complicado, pero no lo es, conserve este <molde= o <>lantilla= as. se puede ayudar en las dudas$ %n este e"emplo se relaciona las tablas 0 y )$ %ste e"emplo se har& primero con alias y lue o sin alias/ *nner Join Tabla 0 y Tabla) (con alias!
"ELECT > 'R#5 Tabla1 T1 I!!ER 7#I! Tabla2 T2 #! T1/IdLetra < T2/IdLetra

*nner Join Tabla 0 y Tabla) (sin alias!


"ELECT > 'R#5 Tabla1 I!!ER 7#I! Tabla2 #! Tabla1/IdLetra < Tabla2/IdLetra

+omo se puede observar en la parte donde va el asterisco (?! es donde se piden los campos de las dos tablas relacionadas, aqu. se traen todos los campos, pero si hubiera al unos en especi#ico que se quiera mostrar se escribe <tabla$campo=$ 'as adelante en esta consulta vemos que se escribe un nombre corto al costado del nombre de la tabla, este es el Alias$ Lue o de esto la tabla tiene asi nado un nombre Alias y se le llamar& mediante este nombre corto i ual que como se hacia con su nombre completo$ 5inalmente vemos la comparacin despu@s de la palabra reservada ,3 que en este caso es <A= tambi@n podr.a ser B,C, etc$ Al inicio tambi@n puede usar el alias (en el lu ar donde va el asterisco! de esta manera/
"ELECT T1/Valor1,T2/Valor2,T2/IdLetra T1/IdLetra <T2/IdLetra 'R#5 Tabla1 T1 I!!ER 7#I! Tabla2 T2 #!

-1e %quivalencia (%qui-Join! %n este tipo es una especie de "oin donde se hace una comparacin de * ualdad por lo tanto si el inner "oin es comparado con C , B estos no entrar.an en esta cate or.a$

%QD* J,*3
"ELECT > 'R#5 Tabla1 I!!ER 7#I! Tabla2 #! Tabla1/IdLetra<Tabla2/IdLetra

- 3atural (3atural-Join! >ropiamente en T-SQL no se puede hacer 3atural Join pero es simple de e(plicar, el 3atural Join da los valores y elimina los campos repetidos en la relacin establecida quedando como el e"emplo donde especi#ique el uso de alias al principio de la Query, se puede ver donde solo se muestra uno de los dos campos *dLetra, esto dar.a un 3atural Join/ 3ATD4AL J,*3
"ELECT T1/IdLetra ,T1/Valor1, T2/Valor2 'R#5 Tabla1 T1 I!!ER 7#I! Tabla2 T2 #! T1/IdLetra <T2/IdLetra

- +ru-ado (+ross-Join! %l +ross Join nos permite hacer un producto cartesiano entre las tablas que estamos comparando, tambi@n se puede dar de manera *mpl.cita lo que llaman el operador proyeccin, al #inal #uncionan i ual/ ---+4,SS J,*3 3,4'AL
"ELECT > 'R#5 Tabla1 CR#"" 7#I! Tabla2; "ELECT Tabla1/IdLetra,Tabla1/Valor1,Tabla2/Valor2 'R#5 Tabla1 CR#"" 7#I! Tabla2;

---+4,SS J,*3 *'>L*+*T,


"ELECT > 'R#5 Tabla1 ,Tabla2; "ELECT Tabla1/IdLetra,Tabla1/Valor1,Tabla2/Valor2 ?ro0 Tabla1,Tabla2;

- A s. misma (Sel#-Join! %ste es un tipo un tanto raro de Join pero siempre es bueno conocer todo el espectro de posibilidades, esta consulta permite hacer un producto cartesiano de la tabla pero consi o misma o sea un Auto +ross Join/ ---S%L5 J,*3
"ELECT > 'R#5 Tabla1 "EL' 7#I! Tabla1 #! Tabla1/IdLetra<Tabla1/IdLetra

,DT%4 J,*3 %n el ,uter Join la di#erencia es que en este tipo de combinacin se mantienen los valores que no tienen equivalente en la otra tabla, esto no sucede en el *nner Join que cuando las tablas no tienen valores equivalentes la relacin botar.a 3DLL en el resultado y este es omitido por de#ecto, hay maneras de conservarlos usando *nner Join especi#icando *s3ull o 3ull$ 8eamos e"emplos del ,uter Join para esto relacionaremos las tablas 9 y : que contiene al unos valores sin equivalente en la otra, primero ha amos un *nner Join comprobando as. que no nos d& los valores 3ull/ --*33%4 J,*3
"ELECT > 'R#5 Tabla3 I!!ER 7#I! Tabla #! Tabla3/IdLetra < Tabla /IdLetra

+omo se observa los valores sin equivalente son omitidos -1e Tabla *-quierda (Le#t ,uter Join!

%l Le#t ,uter Join nos permite hacer una me-cla y conservar todos los valores de la tabla i-quierda (la primera tabla que se menciona en la consulta! sin importar que no ten an equivalente con la de la derecha, veamos el e"emplo/ --L%5T ,DT%4 J,*3
"ELECT > 'R#5 Tabla3 LE'T #$TER 7#I! Tabla #! Tabla3/IdLetra < Tabla /IdLetra

-1e Tabla 1erecha (Le#t ,uter Join! %l 4i ht ,uter Join nos permite hacer una me-cla y conservar todos los valores de la tabla derecha (la se unda tabla que se menciona en la consulta! sin importar que no ten an equivalente con la primera, veamos el e"emplo/ --4*E;T ,DT%4 J,*3
"ELECT > 'R#5 Tabla3 RI-.T #$TER 7#I! Tabla #! Tabla3/IdLetra < Tabla /IdLetra

-+ombinacin +ompleta (5ull ,uter Join! %sta nos permitir& hacer una me-cla total y conservar todos los valores de ambas tablas, los valores que no ten an equivalencia aparecer&n acompaFados de un 3ull y se mostrar&n todos ellos, e"emplo/ --5DLL ,DT%4 J,*3
"ELECT > 'R#5 Tabla3 '$LL #$TER 7#I! Tabla #! Tabla3/IdLetra < Tabla /IdLetra

%sta u.a ha tenido como ob"etivo el #amiliari-ar mediante e"emplos a los estudiantes con las sentencias J,*3$ Se requiere que cada consulta y su resultados sean anali-adas por el estudiante con el #in de complementar lo e(plicado en aula$

Anda mungkin juga menyukai