Skip to content

Combinaciones

Las combinaciones en SQL son una forma de combinar filas de dos o más tablas basadas en una relación entre una o más columnas de las tablas. Las combinaciones se utilizan para recuperar datos de varias tablas en una sola consulta.

En Microsoft SQL Server, las combinaciones se pueden realizar utilizando la cláusula JOIN en una consulta SELECT. Hay varios tipos de combinaciones, incluidas las combinaciones internas, las combinaciones externas y las combinaciones cruzadas.

Supongamos contamos con las siguientes tablas el cual estaremos manejando para realizar las combinaciones:

Tabla Employees

EmployeeIDLastNameFirstNameTitleTitleOfCourtesyBirthDateHireDateAddressCityRegionPostalCodeCountryHomePhoneExtensionPhotoNotesReportsToPhotoPath
1DavolioNancySales RepresentativeMs.1948-12-081992-05-01507 - 20th Ave. E. Apt. 2ASeattleWA98122USA(206) 555-98575467Education includes a BA.2http://accweb/emmployees/davolio.bmp
2FullerAndrewVice PresidentDr.1952-02-191992-08-14908 W. Capital WayTacomaWA98401USA(206) 555-94823457Andrew received his BTS.http://accweb/emmployees/fuller.bmp

Tabla Orders

OrderIDCustomerIDEmployeeIDOrderDateRequiredDateShippedDateShipViaFreightShipNameShipAddressShipCityShipRegionShipPostalCodeShipCountry
10248VINET51996-07-041996-08-011996-07-16332.38Vins et alcools Chevalier59 rue de l’AbbayeReims51100France
10249TOMSP61996-07-051996-08-161996-07-10111.61Toms SpezialitätenLuisenstr. 48Münster44087Germany

Combinaciones internas

Una combinación interna es una combinación que devuelve solo las filas que tienen una coincidencia en ambas tablas. En otras palabras, una combinación interna devuelve solo las filas que tienen un valor común en la columna que se está utilizando para combinar las tablas.

La sintaxis básica de una combinación interna es la siguiente:

SELECT column1, column2, ...
FROM table1
INNER JOIN table2
ON table1.column_name = table2.column_name;

Por ejemplo, para combinar las tablas Employees y Orders utilizando la columna EmployeeID, se puede utilizar la siguiente consulta:

SELECT Employees.LastName, Employees.FirstName, Orders.OrderID, Orders.OrderDate
FROM Employees
INNER JOIN Orders
ON Employees.EmployeeID = Orders.EmployeeID;

En esta consulta, estamos seleccionando los campos LastName y FirstName de la tabla Employees y los campos OrderID y OrderDate de la tabla Orders. Luego, estamos combinando las dos tablas utilizando la columna EmployeeID.

Donde tenemos como resultado la siguiente tabla:

LastNameFirstNameOrderIDOrderDate
DavolioNancy102481996-07-04

Combinaciones externas

Una combinación externa es una combinación que devuelve todas las filas de una o ambas tablas, incluso si no hay una coincidencia entre las tablas. En otras palabras, una combinación externa devuelve todas las filas de las tablas que se están combinando, incluso si no hay un valor común en la columna que se está utilizando para combinar las tablas.

Hay dos tipos de combinaciones externas: la combinación externa izquierda y la combinación externa derecha.

Combinación externa izquierda

Una combinación externa izquierda devuelve todas las filas de la tabla de la izquierda y las filas de la tabla de la derecha que tienen una coincidencia en la columna que se está utilizando para combinar las tablas. Si no hay una coincidencia, la fila de la tabla de la derecha contendrá valores nulos.

La sintaxis básica de una combinación externa izquierda es la siguiente:

SELECT column1, column2, ...
FROM table1
LEFT JOIN table2
ON table1.column_name = table2.column_name;

Por ejemplo, para realizar una combinación externa izquierda entre las tablas Employees y Orders utilizando la columna EmployeeID, se puede utilizar la siguiente consulta:

SELECT Employees.LastName, Employees.FirstName, Orders.OrderID, Orders.OrderDate
FROM Employees
LEFT JOIN Orders
ON Employees.EmployeeID = Orders.EmployeeID;

En esta consulta, estamos seleccionando los campos LastName y FirstName de la tabla Employees y los campos OrderID y OrderDate de la tabla Orders. Luego, estamos combinando las dos tablas utilizando la columna EmployeeID.

Donde tenemos como resultado la siguiente tabla:

LastNameFirstNameOrderIDOrderDate
DavolioNancy102481996-07-04
FullerAndrewNULLNULL

Combinación externa derecha

Una combinación externa derecha devuelve todas las filas de la tabla de la derecha y las filas de la tabla de la izquierda que tienen una coincidencia en la columna que se está utilizando para combinar las tablas. Si no hay una coincidencia, la fila de la tabla de la izquierda contendrá valores nulos.

La sintaxis básica de una combinación externa derecha es la siguiente:

SELECT column1, column2, ...
FROM table1
RIGHT JOIN table2
ON table1.column_name = table2.column_name;

Por ejemplo, para realizar una combinación externa derecha entre las tablas Employees y Orders utilizando la columna EmployeeID, se puede utilizar la siguiente consulta:

SELECT Employees.LastName, Employees.FirstName, Orders.OrderID, Orders.OrderDate
FROM Employees
RIGHT JOIN Orders
ON Employees.EmployeeID = Orders.EmployeeID;

En esta consulta, estamos seleccionando los campos LastName y FirstName de la tabla Employees y los campos OrderID y OrderDate de la tabla Orders. Luego, estamos combinando las dos tablas utilizando la columna EmployeeID.

Donde tenemos como resultado la siguiente tabla:

LastNameFirstNameOrderIDOrderDate
DavolioNancy102481996-07-04
NULLNULL102491996-07-05

Combinaciones cruzadas

Una combinación cruzada es una combinación que devuelve el producto cartesiano de las tablas que se están combinando. En otras palabras, una combinación cruzada devuelve todas las combinaciones posibles de filas de las tablas que se están combinando.

La sintaxis básica de una combinación cruzada es la siguiente:

SELECT column1, column2, ...
FROM table1
CROSS JOIN table2;

Por ejemplo, para realizar una combinación cruzada entre las tablas Employees y Orders, se puede utilizar la siguiente consulta:

SELECT Employees.LastName, Employees.FirstName, Orders.OrderID, Orders.OrderDate
FROM Employees
CROSS JOIN Orders;

En esta consulta, estamos seleccionando los campos LastName y FirstName de la tabla Employees y los campos OrderID y OrderDate de la tabla Orders.

Donde tenemos como resultado la siguiente tabla:

LastNameFirstNameOrderIDOrderDate
DavolioNancy102481996-07-04
FullerAndrew102481996-07-04
DavolioNancy102491996-07-05
FullerAndrew102491996-07-05

En esta consulta, estamos obteniendo todas las combinaciones posibles de filas de las tablas Employees y Orders, lo que resulta en un producto cartesiano de las dos tablas.

Referencias