Professional Documents
Culture Documents
En SQL tenemos tipos de Join que funcionarn en Transact, propio de MS SQL Server, y que slo cambian ciertas partes de la sintaxis para los dems lenguajes ojo todos al final hacen lo mismo, las bases son iguales, tenemos 2 tipos de Join (por definicin al menos) los Joins Internos o de Combinacin interna (Inner Join) y los Joins Externos o Combinacin externa (Outer Join) que a su vez tienen sus diferencias dentro de cada uno de ellos.
CREATE TABLE Tabla1 (IdLetra varchar(5), Valor1 int) CREATE TABLE Tabla2 (IdLetra varchar(5), Valor2 int) CREATE TABLE Tabla3 (IdLetra varchar(5), Valor3 int) CREATE TABLE Tabla4 (IdLetra varchar(5), Valor4 int)
INNER JOIN
El Inner Join te permite combinar dos tablas mediante un campo en comn para hacer relaciones y consultas en este ejemplo vamos a utilizar un Inner Join para unir las tablas 1 y 2, Funciona as: SELECT tabla.(campo que quieres mostrar) FROM Tabla1 (Alias -opcional-) INNER JOIN Tabla2 (Alias opcional-) ON Tabla1(o Alias).NombreCampo(campo en comn) <,>,= (comparacin) Tabla2(o Alias).NombreCampo(campo en comn)
INNER JOIN
Inner Join Tabla 1 y Tabla2 ()
SELECT * FROM Tabla1 INNER JOIN Tabla2 ON Tabla1.IdLetra = Tabla2.IdLetra
De Equivalencia (Equi-Join)
En este tipo es una especie de theta-join donde se hace una comparacin de Igualdad por lo tanto si el inner join es comparado con < , > estos no entraran en esta categora
De Equivalencia (Equi-Join)
SELECT * FROM Tabla1 INNER JOIN Tabla2 ON Tabla1.IdLetra=Tabla2.IdLetra
Natural (Natural-Join)
Propiamente en T-SQL no se puede hacer Natural Join pero es simple de explicar, el Natural Join te da los valores y elimina los campos repetidos en la relacin establecida
Natural (Natural-Join)
SELECT T1.IdLetra ,T1.Valor1, T2.Valor2 FROM Tabla1 T1 INNER JOIN Tabla2 T2 ON T1.IdLetra =T2.IdLetra
Cruzado (Cross-Join)
El Cross Join nos permite hacer un producto cartesiano entre las tablas que estamos comparando, tambin se puede dar de manera Implcita lo que llaman el operador proyeccin, al final funcionan igual:
Cruzado (Cross-Join)
---CROSS JOIN NORMAL SELECT * FROM Tabla1 CROSS JOIN Tabla2 SELECT Tabla1.IdLetra,Tabla1.Valor1,Tabla2.Valor2 FROM Tabla1 CROSS JOIN Tabla2
---CROSS JOIN IMPLICITO SELECT * FROM Tabla1 ,Tabla2 SELECT Tabla1.IdLetra,Tabla1.Valor1,Tabla2.Valor2 from Tabla1,Tabla2
A s misma (Self-Join)
Este es un tipo un tanto raro de Join pero quien sabe la necesidad de tus consultas y necesites implementarla en una, esta te permite hacer un producto cartesiano de la tabla pero consigo misma osea un Auto Cross Join:
A s misma (Self-Join)
OUTER JOIN
En el Outer Join la diferencia es que en este tipo de combinacin se mantienen los valores que no tienen equivalente en la otra tabla, esto no sucede en el Inner Join que cuando las tablas no tienen valores equivalentes la relacin botara NULL en el resultado y este es omitido por defecto
OUTER JOIN
TABLA 1
TABLA 2
TABLA 3
TABLA 4
INNER JOIN
SELECT * FROM Tabla1 INNER JOIN Tabla2 ON Tabla1.IdLetra = Tabla2.IdLetra
INNER JOIN
SELECT * FROM Tabla1 INNER JOIN Tabla2 ON Tabla1.IdLetra = Tabla2.IdLetra WHERE Tabla2.Valor2>=30
De Equivalencia (Equi-Join)
SELECT * FROM Tabla1 INNER JOIN Tabla2 ON Tabla1.IdLetra=Tabla2.IdLetra
Natural (Natural-Join)
SELECT T1.IdLetra ,T1.Valor1, T2.Valor2 FROM Tabla1 T1 INNER JOIN Tabla2 T2 ON T1.IdLetra =T2.IdLetra
Cruzado (Cross-Join)
---CROSS JOIN NORMAL SELECT * FROM Tabla1 CROSS JOIN Tabla2 SELECT Tabla1.IdLetra,Tabla1.Valor1,Tabla2.Valor2 FROM Tabla1 CROSS JOIN Tabla2
Cruzado (Cross-Join)
---CROSS JOIN IMPLICITO SELECT * FROM Tabla1 ,Tabla2 SELECT Tabla1.IdLetra,Tabla1.Valor1,Tabla2.Valor2 from Tabla1,Tabla2
A s misma (Self-Join)
SELECT * FROM Tabla1 SELF JOIN Tabla1 ON Tabla1.IdLetra=Tabla1.IdLetra
OUTER JOIN
SELECT * FROM Tabla3 INNER JOIN Tabla4 ON Tabla3.IdLetra = Tabla4.IdLetra