Sei sulla pagina 1di 27

CONSULTAS MULTITABLA (JOINS) Y

CONSULTAS RESUMEN
 Las consultas multitabla o JOINS, tambien
denominadas combinaciones o composiciones,
permiten recuperar datos de dos o mas tablas
según las relaciones logicas entre ellas. Las
combinaciones indican como deberia utilizar SQL
los datos de una tabla para seleccionar las filas de
otra tabla.
 Una condición de combinación define la forma en la
que dos tablas se relacionan en una consulta al:
 Especificar la columna de cada tabla que debe
usarse para la combinación. Una condición de
combinación típica especifica una clave externa de
una tabla y su clave asociada en otra tabla.
 Especificar un operador lógico (=,<>, etc) para
usarlo en los valores de comparación de las
columnas.
 Por ejemplo:
 La consulta que combina las tablas de pedidos y
clientes, mostrando el numero de pedido y
combinando la columna CLIE de la tabla PEDIDOS
y la columna NUM_CLIE de la tabla CLIENTES
mediante el operador logico =.

SELECT NUM_PEDIDO, IMPORTE, EMPRESA, LIMITE_CREDITO


FROM PEDIDOS, CLIENTES WHERE CLIE=NUM_CLIE
 Un Join de dos tablas es una composición entre las
mismas basada en la coincidencia exacta (u otro
tipo de comparación) de dos clumnas, una de cada
tabla. El JOIN forma parejas de filas haciendo
coincidir los contenidos de las columnas
relacionadas
 Lacondición de búsqueda de un JOIN no tiene por
qué ser la única condición de búsqueda en una
consulta multi-tabla, ya que puede combinarse con
otras condiciones de búsqueda que restrinjan aún
mas las filas devueltas en el resultado.
 EJEMPLO:
 Consulta que enliste las oficinas y nombres y títulos
de sus directores mostrando únicamente las
oficinas con un objetivo de ventas superior a
600,000
 SELECT ciudad, nombre, titulo FROM
REPVENTAS, OFICINAS WHERE dir=num_empl
AND objetivo>600000
 Cuando dos tablas están relacionadas por varias
relaciones clave foránea/clave primaria, pueden
especificarse ambos pares de columnas de
emparejamiento en la condición de búsqueda del
JOIN.
 EJEMPLO: Las columnas FAB y PRODUCTOS de
la tabla PEDIDOS forman ambas una clave foranea
para la tabla PRODUCTOS emparejadas con las
columnas ID_FAB e ID_PRODUCTO.
 Consultaenlista todos los pedidos mostrando los
importes y las descripciones del producto.

 En este tipo de consulta, la condicíon de busqueda


exige que los pares de filas relacionados en las
tablas PEDIDOS y PRODUCTOS sean aquellas en
los que ambos pares de columnas coincidentes
(condición de busqueda del JOIN) tienen los
mismos valores
 Un JOIN de tres o mas tablas es una composición
entre las mismas basada en la coincidencia exacta u
otro tipo de comparación de tres o mas columnas, una
de cada tabla.
 El JOIN forma filas haciendo coincidir los contenidos de
las columnas relacionadas. EJEMPLO: relacionar las
tablas PEDIDOS, CLIENTES y REPVENTAS para
obtener la lista de los pedidos superiores a 25,000
incluyendo el nombre del vendedor que tomo el pedido
y el nombre del cliente que lo solicito.
 ElJOIN forma parejas de filas haciendo cumplirse
las condiciones del JOIN en los contenidos de las
columnas relacionadas
 El concepto de JOIN corresponde a lo que se
conoce como JOIN INTERNO u operación de
composición que combina información procedente
de dos tablas mediante la formación de pares de
filas relacionadas en las dos tablas, según la
condición de búsqueda del JOIN.
 Listarlos vendedores y las ciudades en que
trabajan

 SELECT NOMBRE, CIUDAD, FROM REPVENTAS,


OFICINAS WHERE OFICINA_REP=OFICINA
 Un JOIN EXTERNO completo es una ampliación de un
JOIN INTERNO que contiene la siguiente información.
 El JOIN INTERNO de las dos tablas.
 Por cada fila de la primera tabla que no haya
correspondido a ninguna fila de la segunda tabla, se
añade una fila a los resultados, utilizando los valores de
las columnas de la primera tabla y suponiendo un valor
NULL para todas las columnas de la segunda tabla
correspondientes en el emparejamiento.
 Por cada fila de la segunda tabla que no haya
correspondido a ninguna fila de la primera tabla, se
añade una fila a los resultados, utilizando los valores de
las columnas de la segunda tabla y suponiendo un
valor NULL para todas las columnas de la primera tabla
correspondientes en el emparejamiento.
 Lasintaxis OUTER JOIN en la clausula FROM de la
consulta y la sintaxis ON en lugar de la clausula
WHERE que procede la condición de búsqueda del
JOIN.
 Se produce entre dos tablas con la siguiente
información:
 El JOIN INTERNO ( o JOIN ) de las tablas.
 Por cada fila de la primera tabla que no haya
correspondido a ninguna fila de la segunda tabla, se
añade una fila a los resultados, utilizando los
valores de las columnas de la primera tabla y
suponiendo un valor NULL para todas las columnas
de la segunda tabla correspondientes en el
emparejamiento.
 La siguiente consulta presenta un JOIN INTERNO
de las tablas REPVENTAS y OFICINAS para
obtener los vendedores que sean directores, sus
oficinas de representación, las ciudades en que
trabajan y su numero de empleado.
SELECT nombre, ciudad, oficina_rep, num_empl, dir FROM
REPVENTAS, OFICINAS WHERE num_empl=dir

SELECT nombre, ciudad, oficina_rep, num_empl, dir FROM


REPVENTAS, INNER JOIN OFICINAS ON num_empl=dir
 En cuanto a notación, el JOIN EXTERNO
IZQUIERDO utiliza la sintaxis LEFT JOIN en la
cláusula FROM de la consulta y la sintaxis ON en
lugar de la clausula WHERE que precede la
condición de búsqueda del JOIN.
 Simétricamente, el JOIN EXTERNO DERECHO se
produce entre dos tablas con la siguiente
información:
 El JOIN INTERNO ( o JOIN) de las dos tablas
 Porcada fila de la segunda tabla que no haya
correspondido a ninguna fila de la primera tabla, se
añade una fila a los resultados, utilizando los
valores de las columnas de la segunda tabla y
suponiendo un valor NULL para todas las columnas
de la primera tabla correspondientes en el
emparejamiento
SELECT nombre, ciudad, oficina_rep, num_empl, dir
FROM REPVENTAS LEFT JOIN OFICINAS
ON num_empl=dir
 Combina registros de dos tablas siempre que
existan valores coincidentes en un campo comun, el
JOIN normal utilizado hasta ahora que admite la
sintaxis alternativa que se indica a continuación en
la clausula FROM.

 FROM tabla1 INNER JOIN tabla2 ON


tabla1.campo1 operadorComparación
tabla2.campo2
 SELECT nombre, titulo, objetivo, oficina, ciudad,
FROM REPVENTAS INNER JOIN OFICINAS ON
ofcina_rep=oficina.
 Tambien se puede vincular varias clausulas ON en
una instrucción JOIN mediante la siguiente sintaxis:

 SELECT campos FROM tabla1 INNER JOIN tabla2


ON tabla1.campo1 operadorComparación tabla2.campo1 AND
ON tabla1.campo2 operadorComparación tabla2.campo2 OR
ON tabla1.campo3 operadorComparación tabla2.campo3;
 Combina registros de la tabla de origen cuando se
utiliza la definición del JOIN en cualquier cláusula
FROM. Admiten la sintaxis que se indica a
continuación.
 Sintaxis
 FROM tabla1 [LEFT|RIGHT] JOIN tabla2
ON tabla1.campo1 operadorComparación
tabla2.campo2
 Por ejemplo, utilizar LEFT JOIN con las tablas
OFICINAS (parte izquierda) y VENDEDORES (parte
derecha) para seleccionar todas las oficinas
incluidas aquellas que no tengan vendedores
asignados a ellas.

SELECT nombre, ttulo, objetivo, oficina, ciudad, num_empl, dir


FROM REPVENTAS LEFT JOIN OFICINAS ON num_empl=dir
 Ejemplo2: muestra la combinación de las tablas
REPVENTAS Y OFICINAS por los campos
NUM_EMPL y DIR para mostrar el nombre, el titulo
y el numero del vendedor, así como el numero de
oficina, sus ventas objetivo y su ciudad.

SELECT nombre, ttulo, objetivo, oficina, ciudad, num_empl, dir


FROM REPVENTAS RIGHT JOIN OFICINAS ON num_empl=dir
 Una operación LEFT JOIN o RIGHT JOIN se puede
anidar en una operación INNER JOIN, pero INNER JOIN
no se puede anidar en otra operación LEFT JOIN o
RIGHT JOIN.
 Ejemplo: Listar el nombre de la empresa cliente y las
características de los pedidos para el numero de cliente
2103.

SELECT empresa, num_pedido, importe FROM CLIENTES


INNER JOIN PEDIDOS ON num_clie=clie AND num_clie=2103
 SQL permite realizar consultas que permiten
resumir los datos a través de funciones de columna
y mediante claúsulas GROUP BY, HAVING Y
COMPUTE de la setencia SELECT.
 Funciones de agregado en la lista de selección.
(SUM, AVG, COUNT, COUNT(*), MAX, MIN)
generan valores de resumen en los conjuntos de
resultado de las consultas

Potrebbero piacerti anche