Está en la página 1de 10

BASES DE DATOS II

Mg. Ivn Daro Zapata Daz


Escuela de Ingeniera

Combinacin Interna (Inner Join)


Un join es una operacin que relaciona dos o ms tablas para obtener
un resultado que incluya datos (campos y registros) de ambas; las
tablas participantes se combinan segn los campos comunes a ambas.

Hay tres tipos de combinaciones

1. combinaciones internas (inner join o join),


2. combinaciones externas y
3. combinaciones cruzadas.

Combinacin Interna (Inner Join)


Tambin es posible emplear varias combinaciones en una consulta
"select", incluso puede combinarse una tabla consigo misma.

La combinacin interna emplea "join", que es la forma abreviada de


"inner join". Se emplea para obtener informacin de dos tablas y
combinar dicha informacin en una salida.
La sintaxis bsica es la siguiente

SELECT Campos
FROM Tabla1
INNER JOIN Tabl2
ON Condicin de Combinacin;

Combinacin Interna. Ejemplo


Ejemplo:
Mostrar el nombre de los clientes que han realizado pedidos con
cantidades entre 20 y 30 con nombre de fabricante que contenga una
a.
SOLUCIN

SELECT clientes.Nombre
FROM Clientes inner join Pedidos
On clientes.NumClie=pedidos.Clie
WHERE fab like('%a%')
AND cant BETWEEN 20 AND 30

Anlisis del Ejemplo Anterior

SELECT clientes.Nombre
FROM Clientes inner join Pedidos
On
clientes.NumClie=pedidos.Clie
WHERE fab like('%a%')
AND cant BETWEEN 20 AND 30

Se especifican los campos que


aparecern en el resultado en la lista de
seleccin;

Se indica el nombre de la tabla luego


del "FROM" ("Clientes");

Se Combina la tabla CLIENTES con


"INNER JOIN" y la otra tabla
("PEDIDOS"); se especifica qu tablas
se van a combinar y cmo;

cuando se combina informacin de


varias tablas, es necesario especificar
qu registro de una tabla se combinar
con qu registro de la otra tabla, con
"ON".

Combinacin Interna (Inner Join)


Se debe especificar la condicin para enlazarlas, es decir, el campo
por el cual se combinarn. Este es el campo que tienen en comn las
tablas a combinar.
"ON" hace coincidir registros de ambas tablas basndose en el valor
de tal campo.
En el ejemplo, el campo "NumClie" de "CLIENTES" y el campo "Clie"
de "PEDIDOS" son los que enlazarn ambas tablas. Se emplean
campos comunes, que deben tener tipos de datos iguales o similares.
La condicin de combinacin, es decir, el o los campos por los que se
van a combinar (parte "ON"), se especifica segn las claves primarias
y externas.

Combinacin Interna (Inner Join)


Note que en la consulta, al nombrar el campo se coloca el nombre de la tabla tambin.
Cuando las tablas referenciadas tienen campos con igual nombre, esto es necesario para
evitar confusiones y ambigedades al momento de referenciar un campo.
Por lo tanto, si las tablas que combinamos tienen nombres de campos iguales, DEBE
especificarse a qu tabla pertenece anteponiendo el nombre de la tabla al nombre del campo,
separado por un punto (.).
Si una de las tablas tiene clave primaria compuesta, al combinarla con la otra, en la clusula
"ON" se debe hacer referencia a la clave completa, es decir, la condicin referenciar a todos
los campos clave que identifican al registro.
Se puede incluir en la consulta INNER JOIN la clusula "WHERE" para restringir los registros
que retorna el resultado; tambin "ORDER BY", "DISTINCT", etc..
Se emplea este tipo de combinacin para encontrar registros de la primera tabla que se
correspondan con los registros de la otra, es decir, que cumplan la condicin del "ON". Si un
valor de la primera tabla no se encuentra en la segunda tabla, el registro no aparece..

Simplificar la Sentencia (Inner Join)


SELECT A.Nombre, LimiteCredito
FROM Clientes as A
INNER JOIN Pedidos as B
ON A.NumClie = B.Clie
WHERE fab like('%a%') and Cant BETWEEN 20 and 30

En algunos casos (como en este ejemplo) el uso de alias es para fines


de simplificacin y hace ms legible la consulta si es larga y compleja,
pero en algunas consultas es absolutamente necesario.

Ejemplos (Inner Join)


1.

Obtener la descripcin y la cantidad de los productos de los que se realizaron pedidos


donde la cantidad sea menor al promedio de las cantidades pedidas.

SOLUCIN

SELECT productos.descripcion, Pedidos.cant FROM Pedidos INNER JOIN Productos ON


pedidos.producto=productos.idproducto WHERE cant < (SELECT AVG(cant) FROM Pedidos

2.

Indicar la Regin de la Oficina y el empleado asignado a ella donde se produjo la mayor


venta
SOLUCIN

SELECT empleados.Nombre, oficinas.Region FROM Empleados INNER JOIN Oficinas ON empleados.Oficina =


oficinas.Oficina WHERE empleados.Ventas=(SELECT MAX(ventas) FROM Empleados)