Consultas Varias Tablas
Consultas Varias Tablas
Consultas Varias Tablas
En ocasiones tenemos que usar datos de ms de una tabla. En el ejemplo anterior, el informe
muestra datos de dos tablas distintas:
Para crear el informe, tenemos que enlazar las tablas EMPLOYEES y DEPARTMENTS y acceder a
sus datos.
FROM table1
[JOIN table2
ON (table1.column_name = table2.column_name)]|
ON (table1.column_name = table2.column_name)]|
DONDE:
JOIN table USING column_name realiza una unin igualitaria basndose en el nombre de
columna.
La clusula NATURAL JOIN se basa en todas las columnas de las dos tablas que
tienen el mismo nombre.
Si las columnas que tienen los mismos nombres tienen tipos de datos
diferentes, se devuelve un error.
Ejemplo:
Hay que tener cuidado con este tipo de "join" porque si ambas tablas tiene
ms de un campo con igual nombre, el gestor no sabr por cual debe realizar la
unin. Por ejemplo, si el campo "titulo" de la tabla "libros" se llamara
"nombre", las tablas tendran 2 campos con igual nombre ("codigoeditorial" y
"nombre").
Tenemos que usar la clusula USING para asignar slo una columna cuando corresponde a
ms de una columna.
No debemos usar un alias o un nombre de tabla en las columnas a las que se hace
referencia.
Ejemplos
La relacin entre las tablas HR.EMPLOYEES y HR.DEPARTMENTS es una unin igualitaria (es
decir, los valores de la columna DEPARTMENT_ID de ambas tablas deben ser iguales). Con
frecuencia, este tipo de unin implica complementos de clave primaria y ajena.
Nota: Las uniones igualitarias se denominan tambin uniones simples o uniones internas.
Si no existen nombres de columna comunes en las dos tablas, no es necesario cualificar las
columnas. Sin embargo, utilizar el prefijo de tabla mejora el rendimiento, ya que le indica a
Oracle Server exactamente dnde puede encontrar las columnas.
Nota: Al realizar uniones mediante la clusula USING, no podemos cualificar una columna que
se utilice en la propia clusula USING. Lo que es ms, si se usa esa columna en cualquier otra
parte de la sentencia SQL, no se puede aplicarle un alias.
Cualificar nombres de columna con nombres de tabla puede llevar mucho tiempo,
especialmente si los nombres de tabla son largos. Podemos usar un alias de tabla en lugar de
nombres de tabla. Los alias de tabla ayudan a reducir el cdigo SQL, con lo que se consume
menos memoria.
vemos como se identifican en el ejemplo los alias de tabla de la clusula FROM. El nombre de
tabla se especifica entero, seguido de un espacio y, a continuacin, el alias de tabla. Se le dio a
la tabla EMPLOYEES el alias e y a la tabla DEPARTMENTS, el alias d.
Por ejemplo, para encontrar el nombre del supervisor de Lorentz, tenemos que:
Nota: Se pueden utilizar otras condiciones (como <= y >=), pero BETWEEN es la ms
sencilla. No nos olvidemos de especificar el valor bajo en primer lugar y el alto al final
cuando usemos BETWEEN.
Se usaron los alias de tabla, por motivos de rendimiento, no por posibles
ambigedades.
Entrar a pgina inicial de base de datos luego entrar como usuario SYS para
gestionar otros usuarios.
Desbloquear hr no olvidar modificar usuario antes de salir, luego conectarse desde SQL
developer:
y tipear el siguiente script.
Borrar tabla
DROP TABLE JOB_GRADES;
Uniones Externas
En otras palabras Unir tablas con las clusulas NATURAL JOIN, USING u ON da como
resultado una unin interna. Las filas sin correspondencias no se muestran en la salida.
Para devolver las filas sin correspondencias, puede utilizar una unin externa. Una
unin externa devuelve todas las filas que satisfacen la condicin de unin y devuelve
tambin algunas o todas las filas de una tabla para las que ninguna fila de la otra tabla
satisface la condicin de unin.
Hay tres tipos de uniones externas:
LEFT OUTER
RIGHT OUTER
FULL OUTER
Resumen
Existen varias formas de unir tablas.
Natural (Natural Join)
En este caso se comparan todas las columnas que tengan el mismo nombre en ambas
tablas. La tabla resultante contiene slo una columna por cada par de columnas con el
mismo nombre.
Uniones externas (OUTER JOIN): esta operacin no se requiere que cada registro en las
tablas a tratar tenga un registro equivalente en la otra tabla. El registro es mantenido
en la tabla combinada si no existe otro registro que le corresponda.
PRACTICA:
1-Escriba una consulta para que el departamento de recursos humanos pueda conocer
las direcciones de todos los departamentos. Utilice las tablas LOCATIONS y
COUNTRIES. Muestre en la salida el identificador de ubicacin, el domicilio de calle, la
ciudad, el estado o la provincia y el pas. Utilice una unin natural para generar los
resultados.