Consultas multitabla mysql

Solo disponible en BuenasTareas
  • Páginas : 6 (1466 palabras )
  • Descarga(s) : 0
  • Publicado : 8 de febrero de 2012
Leer documento completo
Vista previa del texto
Consultas Multitablas

OBJETIVO

Que el alumno aprenda a crear consultas para seleccionar columnas de varias tablas y obtener una nueva tabla cuyos valores provengan de tablas diferentes.

INTRODUCCION TEORICA
En este tema vamos a estudiar las consultas multitabla llamadas así porque están basadas en más de una tabla.
El SQL de Microsoft Jet 4.x soporta dos grupos de consultas multitabla:- la unión de tablas
- la composición de tablas

LA UNIÓN DE TABLAS

Esta operación se utiliza cuando tenemos dos tablas con las mismas columnas y queremos obtener una nueva tabla con las filas de la primera y las filas de la segunda. En este caso la tabla resultante tiene las mismas columnas que la primera tabla (que son las mismas que las de la segunda tabla).

Por ejemplo queremos enun sólo listado los productos cuyas existencias sean iguales a cero y también los productos que aparecen en pedidos del año 90. En este caso tenemos unos productos en la tabla de productos y los otros en la tabla de pedidos, las tablas no tienen las mismas columnas no se puede hacer una union de ellas pero lo que interesa realmente es el identificador del producto (idfab,idproducto), luego por unaparte sacamos los códigos de los productos con existencias cero (con una consulta), por otra parte los códigos de los productos que aparecen en pedidos del año 90 (con otra consulta), y luego unimos estas dos tablas lógicas.

El operador que permite realizar esta operación es el operador UNION.

El operador UNION

Como ya hemos visto en la página anterior, el operador UNION sirve paraobtener a partir de dos tablas con las mismas columnas, una nueva tabla con las filas de la primera y las filas de la segunda.

Para ilustrar la operación vamos a realizar el ejercicio visto en la página anterior, vamos a obtener los códigos de los productos que tienen existencias iguales a cero o que aparezcan en pedidos del año 90.

SELECT idfab,idproducto
FROM productos
WHERE existencias = 0UNION ALL
SELECT fab,producto
FROM pedidos
WHERE year(fechapedido) = 1990
ORDER BY idproducto

Se ha incluido la cláusula ALL porque no nos importa que salgan filas repetidas.

Se ha incluido ORDER BY para que el resultado salga ordenado por idproducto, observar que hemos utilizado el nombre de la columna de la primera SELECT, también podíamos haber puesto ORDER BY 2 pero no ORDER BYproducto (es el nombre de la columna de la segunda tabla).

LA COMPOSICIÓN DE TABLAS

La composición de tablas consiste en concatenar filas de una tabla con filas de otra. En este caso obtenemos una tabla con las columnas de la primera tabla unidas a las columnas de la segunda tabla, y las filas de la tabla resultante son concatenaciones de filas de la primera tabla con filas de la segunda tabla.El ejemplo anterior quedaría de la siguiente forma con la composición:

A diferencia de la unión la composición permite obtener filas con datos de las dos tablas, esto es muy útil cuando queremos visualizar filas cuyos datos se encuentran en dos tablas.

Existen distintos tipos de composición, aprenderemos a utilizarlos todos y a elegir el tipo más apropiado a cada caso.
Los tipos decomposición de tablas son:
* El INNER JOIN
* El LEFT / RIGHT JOIN

El operador INNER JOIN

El INNER JOIN es un tipo de composición de tablas, permite emparejar filas de distintas tablas de manera que para cada fila de una de las tablas busca directamente en la otra tabla las filas que cumplen la condición, con lo cual se emparejan sólo las filas que luego aparecen en el resultado.

Lasintaxis es la siguiente:

Ejemplo:

-------------------------------------------------

-------------------------------------------------
SELECT *
FROM pedidos INNER JOIN clientes ON pedidos.clie = clientes.numclie
-------------------------------------------------

tabla1 y tabla2 son especificaciones de tabla (nombre de tabla con alias o no, nombre de consulta guardada), de las tablas...
tracking img