Usar combinaciones internas
Una combinación interna es aquélla en la que los valores de las columnas que se están combinando se comparan mediante un operador de comparación.
En el estándar ISO, las combinaciones internas se pueden especificar en la cláusula FROM o en la cláusula WHERE. Éste es el único tipo de combinación que ISO admite en la cláusula WHERE. Las combinaciones internas especificadas en la cláusula WHERE se conocen como combinaciones internas al estilo antiguo.
Esta consulta de Transact-SQL es un ejemplo de una combinación interna:
USE AdventureWorks;
GO
SELECT *
FROM HumanResources.Employee AS e
INNER JOIN Person.Contact AS c
ON e.ContactID = c.ContactID
ORDER BY c.LastName
Esta combinación interna se conoce como una combinación equivalente. Devuelve todas las columnas de ambas tablas y sólo devuelve las filas en las que haya un valor igual en la columna de la combinación.
Combinaciones con operadores distintos de igual
También se puede combinar valores de dos columnas que no son iguales. Los mismos operadores y predicados usados para las combinaciones internas se pueden utilizar para las combinaciones no igual (< >). Para obtener más información acerca de los operadores y predicados disponibles que se pueden utilizar en combinaciones, vea Usar operadores en expresiones y WHERE (Transact-SQL).
En el siguiente ejemplo se utiliza una combinación menor que (<) para buscar precios de ventas del producto 718 que sean inferiores al precio de lista recomendado para ese producto.
USE AdventureWorks;
GO
SELECT DISTINCT p.ProductID, p.Name, p.ListPrice, sd.UnitPrice AS 'Selling Price'
FROM Sales.SalesOrderDetail AS sd
JOIN Production.Product AS p
ON sd.ProductID = p.ProductID AND sd.UnitPrice < p.ListPrice
WHERE p.ProductID = 718;
GO
Éste es el conjunto de resultados.
ProductID Name ListPrice Selling Price
----------- --------------------------- ------------------ -------------
718 HL Road Frame - Red, 44 1431.5000 758.0759
718 HL Road Frame - Red, 44 1431.5000 780.8182
718 HL Road Frame - Red, 44 1431.5000 858.90
(3 row(s) affected)
Combinaciones con el operador no igual
La combinación no igual (<>) se usa con poca frecuencia. Como regla general, las combinaciones no igual sólo tienen sentido cuando se usan con una autocombinación. Por ejemplo, esta combinación no igual Transact-SQL y la autocombinación se usan para encontrar las subcategorías que tienen al menos dos precios diferentes menores de $15:
USE AdventureWorks;
GO
SELECT DISTINCT p1.ProductSubcategoryID, p1.ListPrice
FROM Production.Product p1
INNER JOIN Production.Product p2
ON p1.ProductSubcategoryID = p2.ProductSubcategoryID
AND p1.ListPrice <> p2.ListPrice
WHERE p1.ListPrice < $15 AND p2.ListPrice < $15
ORDER BY ProductSubcategoryID;
[!NOTA]
La expresión NOT column_name = column_name es equivalente a column_name <> column_name.
En el siguiente ejemplo de Transact-SQL se utiliza una combinación no igual que se combina con una autocombinación para buscar todas las filas de la tabla ProductVendor en la que dos o más filas tengan el mismo ProductID pero distintos números de VendorID (es decir, productos que tienen más de un proveedor):
USE AdventureWorks;
GO
SELECT DISTINCT p1.VendorID, p1.ProductID
FROM Purchasing.ProductVendor p1
INNER JOIN Purchasing.ProductVendor p2
ON p1.ProductID = p2.ProductID
WHERE p1.VendorID <> p2.VendorID
ORDER BY p1.VendorID