La instrucción Select permite obtener información guardada en la base de datos, en ocasiones esta información se encuentra en más de una tabla, para poder extraer la información de más de una tabla en una consulta estas deben estar relacionadas a través de claves foráneas.
Tipos de Joins
Los diferentes tipos de Joins en SQL Server son:
- INNER JOIN: retorna las filas que son iguales en ambas tablas.
- LEFT JOIN: retorna todas las filas de la tabla de la izquierda, incluso si no hay coincidencias en la tabla de la derecha.
- RIGHT JOIN: retorna todas las filas de la tabla de la derecha, incluso si no hay coincidencias en la tabla de la izquierda.
- FULL JOIN: retorna filas cuando hay una coincidencia en una de las tablas.
Tips:
- Se puede usar Join considerando una tabla desde donde se extraerán los datos como principal y luego unirla con otras tablas.
- Especificar alias para campos y tablas.
Ejercicios
En la base de datos Northwind, las tablas Categories, Products y Suppliers (Categorías, Productos y Proveedores) están relacionadas como lo muestra la imagen siguiente:
1. Mostrar el código, nombre, precio y stock de los productos y también el nombre de la categoría a la que pertenece.
select P.ProductID As ‘Código’, P.ProductName As ‘Descripción’, UnitPrice As ‘Precio’, UnitsInStock As ‘Stock’, C.CategoryName as ‘Categoría’
from Products As P join Categories As C on P.CategoryId = C.CategoryID
go
Note el uso del Join en Negrita.
2. Mostrar el código, nombre, precio y stock de los productos y también el nombre del Proveedor (Supplier)
select P.ProductID As ‘Código’, P.ProductName As ‘Descripción’, UnitPrice As ‘Precio’,
UnitsInStock As ‘Stock’, S.CompanyName as ‘Proveedor’
from Products As P join Suppliers As S on P.SupplierId = S.SupplierId
go
Las tablas Orders, Employees y Customers están relacionadas.
3. Mostrar las órdenes de Agosto 1997, incluir Número (OrderID), Monto (Freight), Fecha (OrderDate), Nombre del Cliente (Tabla Customers, campo CompanyName) y el empleado que la genera (Tabla Employees, campos LastName y FirstName)
select O.OrderId As ‘Nº’, O.Freight As ‘Monto’, O.OrderDate As ‘Fecha’, 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
where month(O.OrderDate) = 8 and year(O.OrderDate) = 1997
go


