CONSULTAS A MULTIPLES TABLAS USO DEL JOIN

BASE DE DATOS

02 DE ABRIL DE 2013

Objetivos
• Comprender la teoría fundamental que existe tras la combinación de tablas. • Familiarizarse con la sintaxis de las sentencias de combinación de tablas usando la cláusula JOIN. • Observar las diferencias entre las distintas formas de utilización del JOIN.

Combinación de tablas
• La combinación de tablas es una operación que se realiza con bases de datos relacionales con el propósito de obtener información de columnas de más de una tabla, con esto se obtienen registros que son el resultado de la combinación de los campos de dos o más tablas. • Esta operación es conocida también como unión o vinculación de tablas. • La combinación de campos de tablas distintas sólo es posible cuando se han definido campos relacionados entre tablas. Esto es existe un campo clave primaria en una tabla que aparece como clave foránea en la otra tabla.

Sentencia SQL para la unión de tablas
• La sentencia SQL utilizada para recuperar información de varias tablas en una misma consulta es conocida como INNER JOIN. • Realmente lo que debe hacerse es construir una sentencia SELECT que incluya una cláusula INNER JOIN donde debe especificarse la tabla de unión y otra cláusula ON en la que se especifique cuál es el campo de unión o de combinación a partir del cual se generarán los resultados de la consulta.

que definen la relación entre las tablas. y en la otra tabla (tabla hija) el campo debe ser llave o clave foránea y debe ser del mismo tipo de dato y del mismo ancho. • campo_de_union_tabla1. .Sintaxis de la sentencia SELECT con INNER JOIN • La sintaxis es la siguiente: SELECT lista_de_campos FROM nombre_tabla1 INNER JOIN nombre_tabla2 ON campo_de_union_tabla1 = campo_de_union_tabla2. • Donde nombre_tabla1. campo_de_union_tabla2 son los campos respectivos de las tablas 1 y 2. nombre_tabla2 son los nombres de las tablas que se van a combinar y de donde se van a extraer los campos requeridos por la consulta. En una de las tablas (tabla padre) el campo de unión debe ser llave o clave primeria.

Explicación gráfica de un INNER JOIN • Para obtener los registros coincidentes en ambas tablas habría que realizar: .

Explicación gráfica del INNER JOIN • Se obtiene la siguiente combinación de registros: .

Gráficamente el INNER JOIN • Si observa la gráfica el conjunto de registros resultantes vienen a ser equivalentes al resultado de la intersección de conjuntos (A ∩ B). • Esto es todos los registros de la tabla A que tienen uno o más registros coincidentes en la tabla B. .

EmployeeID=Employees. Employees.orderdate from Orders inner join Employees on orders.EmployeeID order by employeeid .Ejemplo use Northwind go select LastName.employeeid.

Subdivisión de la combinación externa • La combinación externa con OUTER JOIN se divide en combinación completa (FULL OUTER JOIN o OUTER JOIN). . combinación de tabla izquierda (LEFT OUTER JOIN o LEFT JOIN) y combinación de tabla derecha (RIGHT OUTER JOIN o RIGHT JOIN).

Ejemplo con combinación completa .

EmployeeID=Employees.Ejemplo use Northwind go select LastName. Employees.EmployeeID order by employeeid .orderdate from Employees full outer join orders on orders.employeeid.

Ejemplo con combinación izquierda .

Employees.Ejemplo use Northwind go select LastName.EmployeeID order by employeeid .orderdate from Employees left join orders on orders.employeeid.EmployeeID=Employees.

Ejemplo con combinación derecha .

EmployeeID=Employees.employeeid. Employees.EmployeeID order by employeeid .orderdate from Orders right join Employees on orders.Ejemplo use Northwind go select LastName.

.nombre from autores as a join libros as l on a.Uso de alias  select titulo.nombre.e.codigoautor=a.codigo join editoriales as e on codigoeditorial=e.codigo.a.

No es muy utilizado. devuelve el producto cartesiano. . Caso Un pequeño restaurante tiene almacenados los nombres y precios de sus comidas en una tabla llamada "comidas" y en una tabla denominada "postres" los mismos datos de sus postres.cross join • retorna todos los registros de todas las tablas implicadas en la unión.

precio from comidas as c1 cross join postres as c2 where c1.mysqlya. Podemos usar "cross join":  select c * from comidas as c cross join postres as p.com.cross join  El restaurante quiere combinar los registros de ambas tablas para mostrar los distintos menúes que ofrece.nombre.nombre.php?cod=60&punto=66 .precio.c2.rubro='postre'. Fuente: http://www.ar/temarios/descripcion.c2.c1.rubro='plato principal' and c2. Podemos obtener la combinación de platos principales con postres empleando un "cross join" con una sola tabla: select c1.

orderdate from Employees cross join orders where orders.EmployeeID=Employees.employeeid.Ejemplo use Northwind go select LastName. Employees.EmployeeID order by employeeid .

. •Sólo puede haber una única clausula ORDER BY al final de la sentencia SELECT •Debe especificar los nombres de las columnas en la primera instrucción SELECT. Para utilizar la clausula UNION debemos cumplir una serie de normas. deberá crear los alias de columnas en la primera instrucción SELECT. De este modo podemos obtener los registros de mas de una tabla "unidos". y además los campos deben ser del mismo tipo. •Las consultas a unir deben tener el mismo número campos.UNION La cláusula UNION permite unir dos o más conjuntos de resultados en uno tras otro como si se tratase de una única tabla. si desea definir nuevos encabezados de columnas en el conjunto de resultados. Por lo tanto.

Ejemplo use Northwind go select (FirstName + ' ' + lastname) as [Nombre completo] from Employees union select companyname from Customer.Customers .

CONSULTAS A MULTIPLES TABLAS USO DE SUBCONSULTAS .

OBJETIVO Al finalizar esta sesión el estudiante será capaz de : • Definir que es una subconsulta • Crear subconsultas .

. se crean utilizando paréntesis en una instrucción SELECT que sirve como base para cualquier parte de los datos o de la condición de otra consulta.¿Qué es una Subconsulta? • Una subconsulta es una consulta T-SQL normal anidada dentro de otra consulta.

¿Qué es una Subconsulta? Normalmente las subconsultas se utilizan para satisfacer una o un par de las siguientes: necesidades: • Desglosar una consulta en una serie de pasos lógicos. • Proporcionar un listado que va a ser el destino de una cláusula WHERE con [IN | EXISTS |ANY | ALL]. • Proporcionar una búsqueda dirigida por cada registro individual de una consulta principal. .

>.!> y !<.<>.<.¿Qué es una Subconsulta? Una subconsulta puede devolver: • Una sola columna o un solo valor en cualquier lugar en donde pueda utilizarse una expresión de un sólo valor y puede compararse usando los siguientes operadores: =.<=. • Una sola columna o muchos valores que se pueden utilizar con el operador de comparación de listas IN en la cláusula WHERE.>= . • Muchas filas que pueden utilizarse para comprobar la existencia. . usando la palabra EXISTS en la cláusula WHERE.

¿Qué es una Subconsulta? En el proceso de trabajo con subconsultas. Las consultas internas no es más que las subconsultas propiamente dichas y la consultas externa es aquella que hace uso de los resultados devueltos por la consulta interna o subconsulta. . necesariamente manejaremos dos tipos de consultas: consultas internas y consultas externas.

vamos a utilizar una consulta que devuelve un solo valor. Si esperamos la devolución de una lista. lo que significa una columna a partir de una fila. . tendremos que utilizar el operador IN con la consulta externa.Crear una subconsulta anidada Una subconsulta anidada es la que sólo tiene una Dirección: devolver un solo valor para su uso en la consulta externa o una lista de valores a utilizar con el operador IN. Si deseamos utilizar un operador “=” explicito.

la sintaxis de nuestra consulta seguirá una de estas dos plantillas de sintaxis: SELECT <lista de selección> FROM <alguna tabla> WHERE <algunaColumna> = ( SELECT <una sola columna> FROM <alguna Tabla> WHERE <condición cuyo resultado se devuelve en una sola fila> ) .Crear una subconsulta anidada • En su sentido más amplio.

Crear una subconsulta anidada • O la siguiente: SELECT <lista de seleccón> FROM <Alguna Tabla> WHERE <Alguna Columna> IN ( SELECT <una sola columna> FROM <Alguna Tabla> [WHERE <condición>] ) .

Crear una subconsulta anidada • O la siguiente: SELECT <lista de seleccón> FROM <Alguna Tabla> WHERE <Alguna Columna> IN ( SELECT <una sola columna> FROM <Alguna Tabla> [WHERE <condición>] ) .

Ejemplos select advance.title from titles where advance > any (select advance from publishers inner join titles on titles.pub_id where pub_name='Algodata Infosystems' ) .pub_id=publishers.

pub_id where pub_name='Algodata Infosystems' ) .title from titles where advance > all (select MAX(advance) from publishers inner join titles on titles.pub_id=publishers.Ejemplos select advance.

UnitPrice from Products where ProductID in (select ProductID from [Order Details] where Quantity >=100 ) order by ProductName .Ejemplos use Northwind go select ProductID.UnitsInStock.ProductName.

CompanyName from Customers C where exists (select * from dbo.Ejemplos use Northwind Go select CustomerID.CustomerID ) .CustomerID=C.Orders o where O.

funciona como una prueba de existencia.Ejemplos cuando se presenta una subconsulta con la palabra clave EXISTS. devuelve el valor TRUE o FALSE. La cláusula WHERE de la consulta externa comprueba la existencia de las filas devueltas por la subconsulta. La subconsulta en realidad no produce ningún dato. .

Subconsultas en las instrucciones update y delete .

Sin embargo. En algunos casos una operación de combinación puede producir un mejor rendimiento que una subconsulta. no obstante algunas instancias pueden procesarse solo con una subconsulta. . pero por lo general se observa muy poca diferencia en el rendimiento. el uso de grandes anidamientos de subconsultas puede afectar seriamente el rendimiento.Rendimiento y Resultados En muchos casos puede usarse una operación de combinación en lugar de una consulta.

Rendimiento y Resultados .

Rendimiento y Resultados .

y así sucesivamente.. depende de los recursos disponibles del sistema. . Los recursos del sistema(como la memoria disponible) limitan el número de subconsultas que pueden procesarce. . contener otra subconsulta.Rendimiento y Resultados Una subconsulta puede contener otra subconsulta. Se puede anidar subconsultas hasta 32 niveles.. a su vez. y esta subconsulta puede. pero esto como le mencioné.

Rendimiento y Resultados .

Rendimiento y Resultados .

Sign up to vote on this title
UsefulNot useful