Consultas de varias tablas – Usando Join

Select desde varias tablas – Uso de Joins

Para escribir consultas cuyos datos que se desea mostrar se encuentran en varias tablas es necesario que estas estén CORRECTAMENTE relacionadas, antes de hacer las consultas desde varias tablas se deben evitar y corregir los valores Null en la base de datos.

Para optimizar las columnas desde varias tablas se recomienda usar  Join de la manera como se muestran en los ejercicios. Siempre hay una tabla desde donde se va a listar los registros y otras desde donde se van a extraer valores para completar el listado con datos que la hacen mas detallada.

Ejercicios

Usando Norhtwind
use Northwind
go

1. — Listado de las órdenes y el nombre del cliente

select O.OrderID As ‘Orden’, O.Freight as ‘Monto’,
C.CompanyName As ‘Cliente’
from Orders As O
join Customers As C on O.CustomerID = C.CustomerID
go




2. — Listado de las órdenes y el nombre del empleado que las generó

select O.OrderID As ‘Orden’, O.Freight as ‘Monto’,
Empleado = E.LastName + SPACE(1) + E.FirstName
from Orders As O
join Employees As E on O.EmployeeID = E.EmployeeID
go

3. — Listado de las órdenes y los nombres del cliente y del empleado que las generó

select O.OrderID As ‘Orden’, O.Freight as ‘Monto’,
C.CompanyName As ‘Cliente’,
Empleado = E.LastName + SPACE(1) + E.FirstName
from Orders As O
join Customers As C on O.CustomerID = C.CustomerID
join Employees As E on O.EmployeeID = E.EmployeeID
go
— Note los joins después de la cláusula From

4. — Producto y su categoria

select P.ProductID As ‘Código’, P.ProductName,
P.UnitPrice As ‘Precio’, C.CategoryName
from Products As P
join Categories As C on P.CategoryID = C.CategoryID
go

5. — El detalle de la orden 10275, incluyendo el nombre del producto.

select Od.OrderID As ‘Nº Orden’, Od.ProductID As ‘Cód. Producto’,
P.ProductName As ‘Descripción’, Od.UnitPrice As ‘Precio’,
Od.Quantity As ‘Cantidad’
from [Order Details] As OD
join Products As P on od.ProductID = P.ProductID
where OrderID = ‘10275’
go

6. — Listado de productos y el proveedor

select P.ProductID As ‘Código’, P.ProductName,
P.UnitPrice As ‘Precio’, S.CompanyName As ‘Courier’,
S.Address As ‘Dirección Courier’
from Products As P
join Suppliers As S on P.SupplierID= S.SupplierID
go

7. — Listado de órdenes y las compañías de envío

select O.OrderID As ‘Orden’, O.Freight as ‘Monto’,
S.CompanyName As ‘Courier’
from Orders As O
join Shippers As S on O.ShipVia = S.ShipperID
go




8. — Incluir en la orden anterior el nombre del empleado que  generó la orden y el cliente.

select O.OrderID As ‘Orden’, O.Freight as ‘Monto’,
C.CompanyName As ‘Cliente’,
Empleado = E.LastName + SPACE(1) + E.FirstName,
S.CompanyName As ‘Courier’
from Orders As O
join Shippers As S on O.ShipVia = S.ShipperID
join Customers As C on O.CustomerID = C.CustomerID
join Employees As E on O.EmployeeID = E.EmployeeID
go

Recomendaciones:

  • Al usar Join, antes de realizar listados, deben eliminarse los valores Null de la base de datos.
  • En el diseño de su base de datos debe estar correctamente definidas las claves primarias de las tablas y las claves foráneas de las mismas para que los datos ingresados tengan consistencias e integridad.
  • Use correctamente las restricciones en las tablas para evitar los valores Null. (Ver Creación de Tablas)