Select – Usando Join

 

selectjoins

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:

selectjoins_diagrama

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.

selectjoins_diagrama1

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

 

Deja un comentario