Ir al contenido principal

Entradas

Mostrando entradas de agosto 28, 2013

Cualificando Nombres de Columnas Ambiguos

Columnas con el mismo nombre pueden aparecer en las tablas involucradas en un Join. Los nombres de las columnas DEPARTMENT_ID y MANAGER_ID se encuentran en las tablas EMPLOYEES y DEPARTMENTS. La columna REGION_ID está presente en las tablas REGIONS y COUNTRIES. Listar tales columnas en una consulta será un problema cuando Oracle no pueda resolver su origen. Columnas con nombre único en un Join no causa ambigüedad y Oracle puede fácilmente  resolver su Tabla fuente. El problema de nombres de columnas ambiguos es resuelto mediante la notación de punto. Una columna puede ser prefijada con el nombre de su tabla a la cual pertenece seguido de un punto. Esto diferencia las columnas de una o de otra tabla. Notación de punto puede ser utilizada en consultas que involucran cualquier número de tablas. Referenciar algunas columnas no implica que todas las columnas deban ser referenciadas Notación de Punto es mejorada con alias en las tablas. Un Alias de Tabla provee un nombre alternativo, us

Uniendo Tablas Utilizando SQL: Sintaxis 1999

Antes de Oracle 9i, la sintaxis tradicional para realizar los Joins fue el lenguaje disponible para realizar Joins. De ahí en adelante. Oracle ha introducido un nuevo lenguaje que cumple con el Estándar ANSI SQL 1999. Esto no ofrece beneficios en el performance sobre la sintaxis tradicional. Natural Join, outer y cross join pueden ser escritos en ambas la tradicional y la ANSI SQL. Sintaxis  ANSI SQL: 1999 SELECT table1.column, table2.column FROM table1 [NATURAL JOIN table2] | [JOIN table2 USING (column_name)] | [JOIN table2 ON (table1.colum_name = table2.colum_name)] | [LEFT| RIGHT | FULL OUTER JOIN table2 ON (table1.colum_name = table2.colum_name)] | [CROSS JOIN table2]; Sintaxis Oracle Tradicional SELECT table1.column, table2.column FROM table1, table2 [WHERE (table1.column_name = table2.column.name)] | [WHERE (table1.column_name(+) = table2.column.name)] | [WHERE (table1.column_name = table2.column.name)(+)] ; Si ningún JOIN o menos que N-1 JOI