P. 1
Consultas a Multiples Tablas

Consultas a Multiples Tablas

|Views: 2|Likes:
Publicado porferzhow

More info:

Published by: ferzhow on May 22, 2013
Copyright:Attribution Non-commercial

Availability:

Read on Scribd mobile: iPhone, iPad and Android.
download as PDF, TXT or read online from Scribd
See more
See less

11/12/2015

pdf

text

original

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.

. • campo_de_union_tabla1. campo_de_union_tabla2 son los campos respectivos de las tablas 1 y 2. 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. En una de las tablas (tabla padre) el campo de unión debe ser llave o clave primeria. 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.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.

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: .

. • Esto es todos los registros de la tabla A que tienen uno o más registros coincidentes en la tabla B.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).

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

. combinación de tabla izquierda (LEFT OUTER JOIN o LEFT JOIN) y combinación de tabla derecha (RIGHT OUTER JOIN o RIGHT JOIN).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).

Ejemplo con combinación completa .

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

Ejemplo con combinación izquierda .

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

Ejemplo con combinación derecha .

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

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

cross join • retorna todos los registros de todas las tablas implicadas en la unión. . 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. No es muy utilizado. devuelve el producto cartesiano.

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

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

De este modo podemos obtener los registros de mas de una tabla "unidos". •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. deberá crear los alias de columnas en la primera instrucción SELECT. •Las consultas a unir deben tener el mismo número campos. . Por lo tanto. y además los campos deben ser del mismo tipo. Para utilizar la clausula UNION debemos cumplir una serie de normas. si desea definir nuevos encabezados de columnas en el conjunto de resultados.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.

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 .

¿Qué es una Subconsulta? • Una subconsulta es una consulta T-SQL normal anidada dentro de otra consulta. . 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.

• Proporcionar una búsqueda dirigida por cada registro individual de una consulta principal. .¿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].

<=. • Muchas filas que pueden utilizarse para comprobar la existencia.>= . . • Una sola columna o muchos valores que se pueden utilizar con el operador de comparación de listas IN en la cláusula WHERE.!> 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: =. 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.

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. . tendremos que utilizar el operador IN con la consulta externa. 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. 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>] ) .

pub_id=publishers.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' ) .

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

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

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

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

Subconsultas en las instrucciones update y delete .

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

Rendimiento y Resultados .

Rendimiento y Resultados .

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

Rendimiento y Resultados .

Rendimiento y Resultados .

You're Reading a Free Preview

Descarga
scribd
/*********** DO NOT ALTER ANYTHING BELOW THIS LINE ! ************/ var s_code=s.t();if(s_code)document.write(s_code)//-->