El INNER JOIN (realice las pruebas con la bases de datos de Neptuno) El INNER JOIN es un tipo de composicin 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 clusula 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 numricos deben ser de tipos similares. Por ejemplo, se puede combinar campos AutoNumrico y Long puesto que son tipos similares, sin embargo, no se puede combinar campos de tipo Simple y Doble. Adems las columnas no pueden ser de tipo Memo ni OLE. comp representa cualquier operador de comparacin ( =, <, >, <=, >=, o <>) y se utiliza para establecer la condicin de emparejamiento. Se pueden definir varias condiciones de emparejamiento unidas por los operadores AND y OR poniendo cada condicin entre parntesis. 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 ms 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, tambin 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 informacin 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 compaa y pas destinatarios de los clientes que coinciden en las dos tablas pedidos y clientes SELECT NombreCompaa, 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 despus del 10/10/97. Observe que se utiliza una clusula 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 adems del idpedido, tenemos informacin 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 nmero de pedido ordenado descendentemente.
Ejemplo:
SELECT IdPedido, Nombre,Ciudad FROM Pedidos inner join Empleado ON Pedidos.IdEmpleado = empleado.IdEmpleado ORDER by IdPedido desc
ACTIVIDADESDECLASE
Realice los siguientes ejercicios, Usando la base de datos Neptuno 1. Consultar los nombres de los proveedores, ciudad, telfono, 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 categoras 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 cdigos de los pedidos que han atendido, organizar la lista por el apellido en orden alfabtico y por la fecha del pedido desde el ms reciente.
6. Mostrar el cdigo 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 nmeros de rdenes que han hecho.
9. Listar el 50% de los pedidos, desde el ms reciente en adelante, se debe mostrar el nombre del cliente, el nombre de la compaa de envos y la fecha de entrega del pedido.
10. Mostrar el nombre de cada proveedor y el nombre de las categoras 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 categora 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.