 Es otro tipo de composicion de tablas 
que permite emparejar filas de 
distintas tablas de foma mas 
eficiente
 tenemos tipos de Join que funcionarán 
en Transact, propio de MS SQL Server, y 
que sólo cambian ciertas partes de la 
sintaxis para los demás lenguajes ojo 
todos al final hacen lo mismo, las bases 
son iguales, tenemos 2 tipos de Join (por 
definición almenos) los Joins Internos o 
de Combinación interna (Inner Join) y los 
Joins Externos o Combinación externa 
(Outer Join) que a su vez tienen sus 
diferencias dentro de cada uno de ellos
 1. Internos (Inner Join) 
 De Equivalencia (Equi – Join) 
 Natural (Natural – Join) 
 Cruzado (Cross – Join) 
 En sí mismo (Self – Join)
 2. Externos (Outer Join) 
 De tabla Izquierda (Left Outer Join) 
 De tabla Derecha (Right Outer Join) 
 Combinación completa (Full Outer Join)
 INNER JOIN 
 El Inner Join te permite combinar dos tablas 
mediante un campo en común 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 
común) <,>,= (comparación) Tabla2(o 
Alias).NombreCampo(campo en común)
 -Con Alias SELECT * FROM Tabla1 T1 
INNER JOIN Tabla2 T2 ON T1.IdLetra = 
T2.IdLetra 
 Inner Join Tabla 1 y Tabla2 (sin alias) 
 --Sin Alias SELECT * FROM Tabla1 INNER 
JOIN Tabla2 ON Tabla1.IdLetra = 
Tabla2.IdLetra
 Como te das cuenta en la parte donde va el asterisco (*) 
es donde se piden los campos de las dos tablas 
relacionadas como ves aquí se trae todos los campos, 
pero si hubiera algunos en especifico que quieras mostrar 
escribes “tabla.campo” y eliges cuales quieres, mas 
adelante en esta consulta vemos que se escribe un 
nombre corto al costado del nombre de la tabla este es 
el Alias , luego de esto ya la tabla tiene asignado un 
nombre Alias y sólo se le llamará mediante este nombre 
corto igual que como se hacia con su nombre completo; 
finalmente vemos la comparación después de la palabra 
reservada ON que en este caso es “=” también podría ser 
>,<, etc. como algo adicional al inicio también puedes 
usar el alias (en el lugar donde va el asterisco) de esta 
manera:
 SELECT T1.Valor1,T2.Valor2,T2.IdLetra 
FROM Tabla1 T1 INNER JOIN Tabla2 T2 
ON T1.IdLetra =T2.IdLetra
En este tipo es una especie de theta-join 
donde se hace una comparación de 
Igualdad por lo tanto si el inner join es 
comparado con < , > estos no entrarían 
en esta categoría 
 --EQUI JOIN SELECT * FROM Tabla1 INNER 
JOIN Tabla2 ON 
Tabla1.IdLetra=Tabla2.IdL
Propiamente en 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 relación 
establecida quedando como el ejemplo 
donde especifique el uso de alias al 
principio de la Query, lo puedes ver aquí 
donde solo muestro uno de los dos 
campos IdLetra, esto daría un Natural Join: 
 --NATURAL JOIN SELECT T1.IdLetra ,T1.Valor1, 
T2.Valor2 FROM Tabla1 T1 INNER JOIN Tabla 
2 T2 ON T1.IdLetra =T2.IdLetra
 - Cruzado (Cross-Join) 
 El Cross Join nos permite hacer un producto 
cartesiano entre las tablas que estamos 
comparando, también se puede dar de manera 
Implicita lo que llaman el operador proyección, al 
final funcionan igual: 
 ---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: 
 --SELF JOIN SELECT * FROM Tabla1 SELF 
JOIN Tabla1 ON Tabla1.IdLetra=Tabla1. 
IdLetra
 En el Outer Join la diferencia es que en este tipo de 
combinación 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 relación botaría NULL en el resultado y este es omitido 
por defecto, hay maneras de conservarlos usando Inner 
Join especificando IsNull o Null, pero no nos 
compliquemos más, veamos los ejemplos del Outer 
Join para esto relacionaremos las tablas 3 y 4 que 
contiene algunos valores sin equivalente en la otra, 
primero hagamos un Inner Join comprobando así que no 
nos dá los valores Null: 
 --INNER JOIN SELECT * FROM Tabla3 INNER JOIN Tabla4 ON 
Tabla3.IdLetra = Tabla4.IdLetra 
Como verás los valores sin equivalente son omitidos
 El Left Outer Join nos permite hacer una 
mezcla y conservar todos los valores de la 
tabla izquierda (la primera tabla que se 
menciona en la consulta) sin importar que no 
tengan equivalente con la de la derecha, 
veamos el ejemplo: 
 --LEFT OUTER JOIN SELECT * FROM Tabla3 LEFT 
OUTER JOIN Tabla4 ON Tabla3.IdLetra = 
Tabla4.IdLetra
(Left Outer Join) 
 El Right Outer Join nos permite hacer una 
mezcla y conservar todos los valores de la 
tabla derecha (la segunda tabla que se 
menciona en la consulta) sin importar que 
no tengan equivalente con la primera, el 
caso contrario como ven, vamos al 
ejemplo: 
 --RIGHT OUTER JOIN SELECT * FROM Tabla3 
RIGHT OUTER JOIN Tabla4 ON Tabla3.IdLetra 
= Tabla4.IdLetra
 - (Full Outer Join) 
 Con esta útlima nos permitirá hacer una 
mezcla total y conservar todos los 
valores de ambas tablas, los valores que 
no tengan equivalencia 
aparecerán acompañados de un Null y 
se mostrán todos ellos, ejemplo: 
 --FULL OUTER JOIN SELECT * FROM Tabla3 
FULL OUTER JOIN Tabla4 ON 
Tabla3.IdLetra = Tabla4.IdLetra
 la idea de los INNER JOINs es poder acceder a 
campos de una tabla Z relacionada con una tabla 
X, posiblemente tambien teniendo que pasar por 
una tercera (o hasta 4ta o...n-esima) tabla 
relacionada Y. 
X---Y----Z 
Casi siempre se relacionan por IDs ... asi que digamos 
que X son compradores, Y son mercaderias y Z son 
proveedores, como se puede pensar... debo poder 
conocer el proveedor de un producto que compro 
un comprador ante una reclamacion (por ejemplo). 
Por supuesto cada comprador tiene su ID (podria ser 
su DNI), cada producto su ID_producto y cada 
proveedor su ID_proveedor. 
En general seria algo asi.... 
 Código SQL:
 SELECT __(campos)___ FROM 
___(tabla1)___ 
 INNER JOIN _(tabla2)____ 
 ON (id_tabla1=id_tabla2) 
 WHERE 
condiciones_para_cualquier_campo_de 
_cualquier_tabla
 o para 3 tablas (como en el mini-ejemplo) 
Código SQL: 
 SELECT __(campos)___ FROM ___(tabla1)___ 
 INNER JOIN _(tabla2)____ 
 ON (id_tabla1=id_tabla2) 
 INNER JOIN _(tabla3)_ ON 
 (id_tabla2=id_tabla3) 
 WHERE 
condiciones_para_cualquier_campo_de_cu 
alquier_tabla
 donde las condiciones WHERE o 
cualquier LIMIT va al final y son 
opcionales. 
Asi se puede hacer PERFECTAMENTE 
pero es mucho mas facil de seguir y 
evitar confundirse si usamos "alias" para 
los nombres de las tablas:
Codigo sql 
 SELECT t1.* FROM TTTT AS t1 
 INNER JOIN TTTT AS t2 ON 
 t1.id_ = t2.id_ 
 INNER JOIN TTTT AS t3 ON 
 t2.id_ = t3.id_ 
 INNER JOIN TTTT AS t4 ON 
 t3.id_ = t4.id_
 Donde TTTT son los nombres de las 
distintas tablas.
Los inner join- Giovanna Miramontes 3aps Cecyte bc

Los inner join- Giovanna Miramontes 3aps Cecyte bc

  • 2.
     Es otrotipo de composicion de tablas que permite emparejar filas de distintas tablas de foma mas eficiente
  • 4.
     tenemos tiposde Join que funcionarán en Transact, propio de MS SQL Server, y que sólo cambian ciertas partes de la sintaxis para los demás lenguajes ojo todos al final hacen lo mismo, las bases son iguales, tenemos 2 tipos de Join (por definición almenos) los Joins Internos o de Combinación interna (Inner Join) y los Joins Externos o Combinación externa (Outer Join) que a su vez tienen sus diferencias dentro de cada uno de ellos
  • 5.
     1. Internos(Inner Join)  De Equivalencia (Equi – Join)  Natural (Natural – Join)  Cruzado (Cross – Join)  En sí mismo (Self – Join)
  • 6.
     2. Externos(Outer Join)  De tabla Izquierda (Left Outer Join)  De tabla Derecha (Right Outer Join)  Combinación completa (Full Outer Join)
  • 7.
     INNER JOIN  El Inner Join te permite combinar dos tablas mediante un campo en común 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 común) <,>,= (comparación) Tabla2(o Alias).NombreCampo(campo en común)
  • 8.
     -Con AliasSELECT * FROM Tabla1 T1 INNER JOIN Tabla2 T2 ON T1.IdLetra = T2.IdLetra  Inner Join Tabla 1 y Tabla2 (sin alias)  --Sin Alias SELECT * FROM Tabla1 INNER JOIN Tabla2 ON Tabla1.IdLetra = Tabla2.IdLetra
  • 9.
     Como tedas cuenta en la parte donde va el asterisco (*) es donde se piden los campos de las dos tablas relacionadas como ves aquí se trae todos los campos, pero si hubiera algunos en especifico que quieras mostrar escribes “tabla.campo” y eliges cuales quieres, mas adelante en esta consulta vemos que se escribe un nombre corto al costado del nombre de la tabla este es el Alias , luego de esto ya la tabla tiene asignado un nombre Alias y sólo se le llamará mediante este nombre corto igual que como se hacia con su nombre completo; finalmente vemos la comparación después de la palabra reservada ON que en este caso es “=” también podría ser >,<, etc. como algo adicional al inicio también puedes usar el alias (en el lugar donde va el asterisco) de esta manera:
  • 10.
     SELECT T1.Valor1,T2.Valor2,T2.IdLetra FROM Tabla1 T1 INNER JOIN Tabla2 T2 ON T1.IdLetra =T2.IdLetra
  • 11.
    En este tipoes una especie de theta-join donde se hace una comparación de Igualdad por lo tanto si el inner join es comparado con < , > estos no entrarían en esta categoría  --EQUI JOIN SELECT * FROM Tabla1 INNER JOIN Tabla2 ON Tabla1.IdLetra=Tabla2.IdL
  • 12.
    Propiamente en SQLno se puede hacer Natural Join pero es simple de explicar, el Natural Join te da los valores y elimina los campos repetidos en la relación establecida quedando como el ejemplo donde especifique el uso de alias al principio de la Query, lo puedes ver aquí donde solo muestro uno de los dos campos IdLetra, esto daría un Natural Join:  --NATURAL JOIN SELECT T1.IdLetra ,T1.Valor1, T2.Valor2 FROM Tabla1 T1 INNER JOIN Tabla 2 T2 ON T1.IdLetra =T2.IdLetra
  • 13.
     - Cruzado(Cross-Join)  El Cross Join nos permite hacer un producto cartesiano entre las tablas que estamos comparando, también se puede dar de manera Implicita lo que llaman el operador proyección, al final funcionan igual:  ---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
  • 14.
     - Así 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:  --SELF JOIN SELECT * FROM Tabla1 SELF JOIN Tabla1 ON Tabla1.IdLetra=Tabla1. IdLetra
  • 15.
     En elOuter Join la diferencia es que en este tipo de combinación 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 relación botaría NULL en el resultado y este es omitido por defecto, hay maneras de conservarlos usando Inner Join especificando IsNull o Null, pero no nos compliquemos más, veamos los ejemplos del Outer Join para esto relacionaremos las tablas 3 y 4 que contiene algunos valores sin equivalente en la otra, primero hagamos un Inner Join comprobando así que no nos dá los valores Null:  --INNER JOIN SELECT * FROM Tabla3 INNER JOIN Tabla4 ON Tabla3.IdLetra = Tabla4.IdLetra Como verás los valores sin equivalente son omitidos
  • 16.
     El LeftOuter Join nos permite hacer una mezcla y conservar todos los valores de la tabla izquierda (la primera tabla que se menciona en la consulta) sin importar que no tengan equivalente con la de la derecha, veamos el ejemplo:  --LEFT OUTER JOIN SELECT * FROM Tabla3 LEFT OUTER JOIN Tabla4 ON Tabla3.IdLetra = Tabla4.IdLetra
  • 17.
    (Left Outer Join)  El Right Outer Join nos permite hacer una mezcla y conservar todos los valores de la tabla derecha (la segunda tabla que se menciona en la consulta) sin importar que no tengan equivalente con la primera, el caso contrario como ven, vamos al ejemplo:  --RIGHT OUTER JOIN SELECT * FROM Tabla3 RIGHT OUTER JOIN Tabla4 ON Tabla3.IdLetra = Tabla4.IdLetra
  • 18.
     - (FullOuter Join)  Con esta útlima nos permitirá hacer una mezcla total y conservar todos los valores de ambas tablas, los valores que no tengan equivalencia aparecerán acompañados de un Null y se mostrán todos ellos, ejemplo:  --FULL OUTER JOIN SELECT * FROM Tabla3 FULL OUTER JOIN Tabla4 ON Tabla3.IdLetra = Tabla4.IdLetra
  • 19.
     la ideade los INNER JOINs es poder acceder a campos de una tabla Z relacionada con una tabla X, posiblemente tambien teniendo que pasar por una tercera (o hasta 4ta o...n-esima) tabla relacionada Y. X---Y----Z Casi siempre se relacionan por IDs ... asi que digamos que X son compradores, Y son mercaderias y Z son proveedores, como se puede pensar... debo poder conocer el proveedor de un producto que compro un comprador ante una reclamacion (por ejemplo). Por supuesto cada comprador tiene su ID (podria ser su DNI), cada producto su ID_producto y cada proveedor su ID_proveedor. En general seria algo asi....  Código SQL:
  • 20.
     SELECT __(campos)___FROM ___(tabla1)___  INNER JOIN _(tabla2)____  ON (id_tabla1=id_tabla2)  WHERE condiciones_para_cualquier_campo_de _cualquier_tabla
  • 21.
     o para3 tablas (como en el mini-ejemplo) Código SQL:  SELECT __(campos)___ FROM ___(tabla1)___  INNER JOIN _(tabla2)____  ON (id_tabla1=id_tabla2)  INNER JOIN _(tabla3)_ ON  (id_tabla2=id_tabla3)  WHERE condiciones_para_cualquier_campo_de_cu alquier_tabla
  • 22.
     donde lascondiciones WHERE o cualquier LIMIT va al final y son opcionales. Asi se puede hacer PERFECTAMENTE pero es mucho mas facil de seguir y evitar confundirse si usamos "alias" para los nombres de las tablas:
  • 23.
    Codigo sql SELECT t1.* FROM TTTT AS t1  INNER JOIN TTTT AS t2 ON  t1.id_ = t2.id_  INNER JOIN TTTT AS t3 ON  t2.id_ = t3.id_  INNER JOIN TTTT AS t4 ON  t3.id_ = t4.id_
  • 24.
     Donde TTTTson los nombres de las distintas tablas.