Sentencias SQL cruces optimizados inner, outer y cross join


En este ejemplo mostrare como ejecutar cruces entre tablas sql de tres maneras:

Inner join 

Con esta operación cada registro en la tabla A es combinado con los correspondientes de la tabla B que satisfagan las condiciones que se especifiquen en el predicado del JOIN. Cualquier registro de la tabla A o de la tabla B que no tenga uno correspondiente en la otra tabla es excluido, y solo aparecerán los que tengan correspondencia en la otra tabla. Este es el tipo de JOIN más utilizado, por lo que es considerado el tipo de combinación predeterminado.
Mas informacion : Wikipedia

El inner join básicamente cruza dos tablas mostrando únicamente los datos combinados aquí un ejemplo:
select * from empleado t0
inner join Departamento t1 on t0.iddep=t1.id
where t1.Departamento like '%compras'


id     iddep  nombre Genero id     Departamento cantidad
2      2      Rosa   F      2      Compras      2
6      2      popo   F      2      Compras      2
8      2      More   F      2      Compras      2
9      2      Mageni M      2      Compras      2
10     2      HN     M      2      Compras      2

Ejecutando el sql pbtendriamos únicamente los empleados del departamento de compras

Outer Join

Mediante esta operación no se requiere que un registro en una tabla tenga un registro relacionado en la otra tabla. El registro es mantenido en la tabla combinada aunque no exista el correspondiente en la otra tabla.
Existen tres tipos de combinaciones externas, el Left Join, el Right Join y el Full Join, donde se toman todos los registros de la tabla de la izquierda, o todos los de la tabla derecha, o todos los registros respectivamente.
Más informacion: Wikipedia

El outer join sirve para mostrar todo el contenido definiendo primeramente que lado tomar en cuenta para hacerlo.

Por ejemplo mostremos datos de todos los empleados que forman parte del departamento de compras
Con left nos toma todos los datos de empleado sin importar que no pertenezca al departamento:

select * from empleado t0 left outer join Departamento t1 on t0.iddep=t1.id

id            iddep    nombre               Genero                id            Departamento cantidad
1             1             Carlos   M           1             IT            1
2             2             Rosav    F             2             Compras             2
5             1             Qwerty F             1             IT            1
6             2             popo     F             2             Compras             2
7             1             Rosa      F             1             IT            1
8             2             More    F             2             Compras             2
9             2             Mag       M           2             Compras             2
10           2             HN         M           2             Compras             2
11           NULL     Anonimo             NULL     NULL     NULL     NULL

Con right nos toma todos los datos del departamento sin importar que ningún empleado pertenezca al departamento:

select * from empleado t0 right outer join Departamento t1 on t0.iddep=t1.id

id            iddep    nombre               Genero                id            Departamento cantidad
1             1             Carlos   M           1             IT            1
5             1             Qwerty F             1             IT            1
7             1             Rosa      F             1             IT            1
2             2             Rosa lv  F             2             Cos        2
6             2             popo     F             2             Coas      2
8             2             More    F             2             Coras    2
9             2             Magen M           2             Coras    2
10           2             HN         M           2             Coras    2
NULL     NULL     NULL     NULL     3             Bodega NULL

Cross join 

El CROSS JOIN presenta el producto cartesiano de los registros de las dos tablas. La tabla resultante tendrá todos los registros de la tabla izquierda combinados con cada uno de los registros de la tabla derecha.
Mas informacion: Wikipedia

El cross join el conjunto de todos los valores que contengan ambas tabals combinados entre si

Por ejemplo: SELECT * FROM empleado CROSS JOIN departamento

Vendría mostrando los datos de cada empleado en todos los departamentos existentes.


SQL


Comentarios

Populares

Buscar en este blog