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
Comentarios
Publicar un comentario