ECCI: ESCUELA COLOMBIANA DE CARRERAS INDUSTRIALES

Ing. Gustavo Beltrán Macías gbeltranm@ecci.edu.co

Asignatura: Base de Datos Semestre: IV

Guia 6 –Consultas de combinación de tablas

El INNER JOIN (realice las pruebas con la bases de datos de Neptuno)
El INNER JOIN es un tipo de composición de tablas, permite emparejar filas de distintas tablas cuando
una de las columnas de emparejamiento está indexada.
La sintaxis es la siguiente:

Ejemplo:
SELECT *
FROM pedidos INNER JOIN clientes ON pedidos.Idcliente = clientes.IdCliente
Las tabla1 y tabla2 son especificaciones de tabla (nombre de tabla con alias o no, nombre de consulta
guardada), de las tablas cuyos registros se van a combinar.
Pueden ser las dos la misma tabla, en este caso es obligatorio definir al menos un alias de tabla.
 col1, col2 son las columnas de emparejamiento.
Observar que dentro de la cláusula ON los nombres de columna deben ser nombres cualificados
(lleva delante el nombre de la tabla y un punto).
 Las columnas de emparejamiento deben contener la misma clase de datos, las dos de tipo
texto, de tipo fecha etc... los campos numéricos deben ser de tipos similares. Por ejemplo, se
puede combinar campos AutoNumérico y Long puesto que son tipos similares, sin embargo, no
se puede combinar campos de tipo Simple y Doble. Además las columnas no pueden ser de tipo
Memo ni OLE.
 comp representa cualquier operador de comparación ( =, <, >, <=, >=, o <>) y se utiliza para
establecer la condición de emparejamiento.
Se pueden definir varias condiciones de emparejamiento unidas por los operadores AND y OR poniendo
cada condición entre paréntesis. Ejemplo:

SELECT *
FROM [Detalles de pedidos] INNER JOIN productos ON ([Detalles de pedidos].IdProducto
= productos.IdProducto) AND ([Detalles de pedidos].PrecioUnidad =
productos.PrecioUnidad)

Se pueden combinar más de dos tablas
En este caso hay que sustituir en la sintaxis una tabla por un INNER JOIN completo.

Por ejemplo:
SELECT *
FROM (pedidos INNER JOIN clientes ON pedidos.IdCliente = clientes.IdCliente) INNER
JOIN empleados ON pedidos.IdEmpleado = empleados.IdEmpleado

En vez de tabla1 hemos escrito un INNER J OIN completo, también podemos escribir:
SELECT *
FROM clientes INNER JOIN (pedidos INNER JOIN empleados ON pedidos.IdEmpleado=
empleados.IdEmpleado) ON pedidos.IdCliente = clientes.IdCliente

En este caso hemos sustituido tabla2 por un INNER J OIN completo.
Para estos ejemplos utilice la base de datos NEPTUNO
Ejemplo 1

En este ejemplo se mostrara toda la información que tienen las tablas productos y detalles de pedidos

SELECT * from productos, [Detalles de pedidos]

Ejemplo 2

En este ejemplo se devuelven Los nombres de la compañía y país destinatarios de los clientes que
coinciden en las dos tablas pedidos y clientes
SELECT NombreCompañía, PaisDestinatario
FROM pedidos INNER JOIN clientes ON pedidos.Idcliente = clientes.IdCliente

Ejemplo 3:
En este ejemplo se devuelven los nombres de las empresas que han enviado pedidos después del
10/10/97. Observe que se utiliza una cláusula WHERE para restringir las filas devueltas en el conjunto de
resultados.
SELECT NombreEmpresa,FechaEnvio
FROM Pedido INNER JOIN Cliente
ON pedido.IdCliente = cliente.IdCliente
WHERE FechaEnvio>'10/10/97'

Ejemplo 4:

Si miramos la tabla pedidos veremos que además del idpedido, tenemos información del empleado que
realizo el pedido y la ciudad. Por lo tanto, por medio del campo IdEmpleado presente en las dos tablas
podemos relacionar Empleados y pedidos; con el número de pedido ordenado descendentemente.

Ejemplo:

SELECT IdPedido, Nombre,Ciudad
FROM Pedidos inner join Empleado
ON Pedidos.IdEmpleado = empleado.IdEmpleado
ORDER by IdPedido desc



ACTIVIDADES DE CLASE 

Realice los siguientes ejercicios, Usando la base de datos Neptuno
1. Consultar los nombres de los proveedores, ciudad, teléfono, nombre del producto, precio y
existencias, para aquellos cuyas existencias sean menores a 20 unidades.

2. Consultar los nombres de los empleados que han atendido al cliente ALFKI, el listado debe incluir
nombre completo y cargo del empleado.

3. Consultar los nombres de los clientes que hicieron compras en octubre de 2010.

4. Mostrar los nombres de los productos, su precio unitario y existencias únicamente para los de las
categorías 3, 5 y 7. La lista debe mostrarse en orden ascendente por el nombre del producto.

5. Mostrar una lista con los nombres completos de los empleados y los códigos de los pedidos que
han atendido, organizar la lista por el apellido en orden alfabético y por la fecha del pedido desde
el más reciente.

6. Mostrar el código del pedido y el nombre de los productos vendidos en octubre de 2010.

7. Mostrar el nombre del cliente, nombre y apellido del empleado y el cargo de los pedidos con cargo
mayor a 70.

8. Listar los clientes cuyo nombre empiece por A incluyendo los números de órdenes que han hecho.

9. Listar el 50% de los pedidos, desde el más reciente en adelante, se debe mostrar el nombre del
cliente, el nombre de la compañía de envíos y la fecha de entrega del pedido.

10. Mostrar el nombre de cada proveedor y el nombre de las categorías que suministra.

11. Ordenar de mayor a menor por su precio unitario los productos cuyo empaque sean botellas.
Mostrar el nombre del producto y el nombre de la categoría a la cual pertenecen.

12. Consultar por cada producto el total de unidades vendidas por mes, el listado debe incluir nombre
del producto, el mes y el total de unidades vendidas en ese mes.

13. Mostrar el nombre del cliente, la cantidad de compras que ha hecho y el monto total de las
mismas, mostrar solo el que mayor cantidad de compras ha hecho.