Cómo consultar datos de varias tablas con INNER JOIN de SQL Server

Resumen
: en este tutorial, aprenderás a usar la cláusula INNER JOIN de SQL Server para consultar datos de varias tablas.
Introducción a INNER JOIN de SQL Server
INNER JOIN es una de las combinaciones más utilizadas en SQL Server. La cláusula INNER JOIN te permite consultar datos de dos o más tablas relacionadas, otras cláusulas que puedes utilizar para hacer combinaciones entre tablas son LEFT JOIN y RIGHT JOIN.
Consulta las siguientes tablas de productos y categorías de la base de datos de ejemplo:
La siguiente declaración SELECT recupera la información de los productos de la tabla production.products:
SELECT
product_name,
list_price,
category_id
FROM
production.products
ORDER BY
product_name DESC;
Resultado:
La consulta arrojó solo una lista de números de identificación de categoría, no los nombres de las categorías. Para incluir los nombres de las categorías en el conjunto de resultados, utiliza la cláusula INNER JOIN de la siguiente manera:
SELECT
product_name,
category_name,
list_price
FROM
production.products p
INNER JOIN production.categories c
ON c.category_id = p.category_id
ORDER BY
product_name DESC;
Resultado:
En esta consulta:
La c y p son los alias de las tablas production.categories y production.products. Al hacer esto, cuando hace referencia a una columna en esta tabla, puede usar alias.column_name en lugar de usar table_name.column_name. Por ejemplo, la consulta usa c.category_id en lugar de production.categories.category_id.
Para cada fila de la tabla production.products, la cláusula INNER JOIN empareja cada fila de la tabla product.categories según los valores de la columna category_id:
- Si ambas filas tienen el mismo valor en la columna category_id, la combinación interna forma una nueva fila cuyas columnas son de las filas de las tablas production.categories y production.products de acuerdo con las columnas de la lista de selección e incluye esta nueva fila en la conjunto resultante.
- Si la fila de la tabla production.products no coincide con la fila de la tabla production.categories, la cláusula INNER JOIN simplemente ignora estas filas y no las incluye en el conjunto de resultados.
Sintaxis de INNER JOIN de SQL Server
A continuación, se muestra la sintaxis de la cláusula INNER JOIN de SQL Server:
SELECT
select_list
FROM
T1
INNER JOIN T2 ON join_predicate;
En esta sintaxis, la consulta recuperó datos de las tablas T1 y T2:
- Primero, se especifica la tabla principal (T1) en la cláusula FROM
- En segundo lugar, se especifica la segunda tabla en la cláusula INNER JOIN (T2) y un predicado de combinación. Solo las filas que hacen que el predicado de combinación se evalúe como TRUE se incluyen en el conjunto de resultados.
La cláusula INNER JOIN compara cada fila de la tabla T1 con las filas de la tabla T2 para encontrar todos los pares de filas que satisfacen el predicado de combinación. Si el predicado de unión se evalúa como VERDADERO, los valores de columna de las filas coincidentes de T1 y T2 se combinan en una nueva fila y se incluyen en el conjunto de resultados.
La siguiente tabla ilustra la unión interna de dos tablas T1 (1,2,3) y T2 (A, B, C). El resultado incluye filas: (2, A) y (3, B) ya que tienen los mismos patrones.
Ten en cuenta que la palabra clave INNER es opcional, puedes omitirla como se muestra en la siguiente consulta:
SELECT
select_list
FROM
T1
JOIN T2 ON join_predicate;
Más ejemplos de INNER JOIN de SQL Server
Consulta las siguientes tablas de productos, categorías y marcas:
La siguiente declaración utiliza dos cláusulas INNER JOIN para consultar datos de las tres tablas:
SELECT
product_name,
category_name,
brand_name,
list_price
FROM
production.products p
INNER JOIN production.categories c ON c.category_id = p.category_id
INNER JOIN production.brands b ON b.brand_id = p.brand_id
ORDER BY
product_name DESC;
Resultado:
En este tutorial, has aprendido a utilizar la cláusula INNER JOIN de SQL Server para consultar datos de varias tablas.