Ir al contenido principal

Entradas

Mostrando entradas de agosto 19, 2013

Oracle Sintaxis JOIN

La sintaxis JOIN propiedad de Oracle ha evolucionado hasta ser estable y entendible por millones de usuarios. La sintaxis tradicional es soportada por Oracle y está presente en los sistemas en todo el mundo. Usted sin duda encontrará sintaxis tradicional Oracle JOIN Usted, que ahora está haciendo camino para la sintaxis compatible con ANSI normalizado descrito en este capítulo. La sintaxis Tradicional de Oracle JOIN soporta Natural Join, Outer Join y Cartesian Join comose muestra en lo siguiente: -- SINTAXIS JOIN TRADICIONAL -           CONSULTA 1 - NATURAL JOIN SELECT country_name, regions.region_name FROM   countries, regions WHERE  regions.region_id = countries.region_id; -           CONSULTA 2 -- OUTER JOIN SELECT employees.first_name, employees.last_name, departments.department_name FROM   employees, departments WHERE  employees.department_id (+) = departments.department_id; -           CONSULTA 3 -- CARTESIAN JOIN SELECT * FROM   regions, countr

Cross Join

Un Cross Join o Producto Cartesiano deriva su nombre de las matemáticas. En el que también se conoce como un producto de cruce entre dos conjuntos o matrices. Esta unión crea una fila por cada combinación de la tabla Source y Target. Si la tabla Source Y Target tiene tres y cuatro registros  , un Cross Join entre ellos resulta 3 X 4 = 12 filas devueltas. 

Outer Joins

No todas las tablas comparten una relación completa, donde cada registro en la Tabla Source tiene al menos una coincidencia con un registro en la tabla Target. En ocasiones se requieren las filas que no coinciden se recuperen mediante una consulta. Esto puede parecer para derrotar el propósito de combinaciones, pero tiene algunas ventajas prácticas.  Suponga la tabla empleados y departamentos unidas por la columnas department_id. Registros en la tabla empleado con valor null en la columna DEPARTMENT_ID son excluidos. Un Outer Join encuentra estos registros.

JOIN ON

Con este formato permite especificar explícitamente las columnas por medio del cual se va a realizar el JOIN, esto es útil cuando las columnas no tienen el mismo nombre en la tabla SOURCE y TARGET. -- NATURAL JOIN -- NATURAL JOIN SELECT countries.country_name, regions.region_name FROM   countries        NATURAL JOIN regions; -- JOIN USING SELECT countries.country_name, regions.region_name FROM   countries        JOIN regions USING (region_id); -- SINTAXIS JOIN ON SELECT countries.country_name, regions.region_name FROM   countries        JOIN regions ON (countries.region_id = regions.region_id);

JOIN USING

Algunas veces más control debe ser ejercido con respecto a que columnas utilizar para realizar uniones. Cuando hay varias columnas idénticas en la tabla SOURCE y TARGET a veces es necesario excluir columnas del JOIN, el formato JOIN … USING puede ser utilizado. Recuerde que Oracle no impone normas que disponen que las columnas con el mismo nombre en dos tablas separadas deban tener una relación con los demás. SELECT * FROM   regions  JOIN countries USING (region_id); La consulta realiza un join especificando por medio de cual columna se va a realizar la unión en esta caso se especifica la columna región_id que está presente en las dos tablas y así se excluyen otras columnas comunes en ambas tablas.

Natural Join

El Natural Join es implementado utilizando tres posibles clausulas JOIN que usan las siguientes palabras en diferentes combinaciones: NATURAL JOIN, USING, y ON. Cuando las tablas Source y Target comparten nombres idénticos de columnas es posible desarrollar un Natural Join entre ellas sin especificar columnas. Esto es a veces referido como un pure natural join. En este escenario columnas con el mismo nombre en las tablas Source y Target son automáticamente asociadas. Filas con el mismo valor en las columnas en ambas tablas son recuperadas. Las palabras NATURAL JOIN instruyen a Oracle a identificar columnas con nombres idénticos en las tablas Source y Target y posteriormente un Join implícitamente es desarrollado entre ellas. -- NATURAL JOIN -- LAS TABLAS SE UNEN MEDIANTE LA COLUMNA REGION_ID DESCRIBE REGIONS; DESCRIBE COUNTRIES; SELECT country_id, country_name, region_name FROM   regions        NATURAL JOIN countries ORDER BY region_name; -- SE UNEN MEDIA

Tipos de Joins

Dos uniones básicas son equijoin y nonequijoin. Equijoins es el más comúnmente utilizado. Las uniones pueden ser desarrolladas entre  muchas tablas. Pero todos los ejemplos son manejados como dos tablas. La primera tabla es llamada Source y la segunda es llamada Target. Filas en la tabla Source y Target están compuestas  por una o más columnas. Equijoins facilita la recuperación  de valores de columnas de múltiples tablas en una sola consulta.       Las tablas Source y Target pueden ser intercambiados en la consulta, la tabla Target pueden ser la Tabla Source y viceversa.

Unión

Las tablas se pueden unir de varias maneras. La técnica más común se llama Equijoin. Una fila está asociada con una o más filas de otra tabla basada en la igualdad de los valores de columna o expresiones. Las tablas también pueden ser unidas usando un Nonequijoin. En este caso, una fila está asociada con una o más filas de otra tabla si sus valores de columna caen en un rango determinado por operadores de desigualdad. Otra técnica menos común es asociar filas con otras filas de la misma tabla. Esta asociación se basa en columnas con relaciones lógicas y por lo general jerárquicas entre sí. Esto es llamado un Self-join. Filas con valores nulos en columnas de combinación son excluidas cuando Equijoins y Nonequijoins son realizados. Outer join está disponible para obtener filas huérfanas. Un Cross Join o Producto Cartesiano es formado cuando todas las filas de una tabla son unidas con todas las filas de otra tabla. Esta unión es a menudo el resultado  de condiciones ineficaces pero