SQL INNER JOIN (Español)

Resumen: en este tutorial, aprenderá a consultar datos de varias tablas mediante la instrucción SQL INNER JOIN.

En el tutorial anterior, aprendió cómo consultar datos de una sola tabla usando la instrucción SELECT. Sin embargo, a menudo desea consultar datos de varias tablas para tener un conjunto de resultados completo para el análisis. Para consultar datos de varias tablas, utilice declaraciones de combinación.

SQL proporciona varios tipos de combinaciones, como combinación interna, combinación externa (combinación externa izquierda o combinación izquierda, combinación externa derecha o combinación derecha y combinación externa completa ) y autounión. En este tutorial, le mostraremos cómo usar la cláusula INNER JOIN.

Sintaxis SQL INNER JOIN

Lo siguiente ilustra INNER JOIN sintaxis para unir dos tablas:

1
2
3
4
5

SELECT
columna1, columna2
DE
tabla_1
INNER JOIN table_2 ON join_condition;

Examinemos la sintaxis anterior con mayor detalle:

  • Las table_1 y table_2 se denominan tablas unidas.
  • Para cada fila en el table_1, la consulta busca la fila correspondiente en el table_2 que cumple la condición de unión. Si se encuentra la fila correspondiente, la consulta devuelve una fila que contiene datos de ambas tablas. De lo contrario, examina la siguiente fila en table_1, y este proceso continúa hasta que se examinan todas las filas en table_1.

Para unir más de dos tablas, se aplicó la misma lógica.

Ejemplos de SQL INNER JOIN

SQL INNER JOIN – ejemplo de consulta de datos de dos tablas

En este ejemplo, usaremos las tablas products y categories en la base de datos de muestra. La siguiente imagen ilustra el diagrama de la base de datos.

En el diagrama anterior:

  • Una categoría puede tener muchos productos.
  • Un producto pertenece a una y solo una categoría.

Por lo tanto, existe una relación de muchos a uno entre las filas de categories tabla y filas en la products tabla. El enlace entre las dos tablas es la categoryid columna.

Necesitamos consultar los siguientes datos de ambas tablas:

  • productID, productName de la products tabla.
  • categoryName de la categories tabla.

La siguiente consulta recupera datos de ambas tablas:

1
2
3
4
5
6

SELECT
productID, productName, categoryName
FROM
productos
INNER JOIN
categorías EN categorías.categoryID = productos.categoryID;

La condición de unión se especifica en la cláusula INNER JOIN después de la palabra clave ON como la expresión:

1

categorías.categoryID = productos.categoryID

Para cada fila en el products, la consulta busca una fila correspondiente en la categories tabla que tiene la misma categoryid. Si hay una coincidencia entre dos filas en ambas tablas, devuelve una fila que contiene las columnas especificadas en la cláusula SELECT, es decir, identificación del producto, nombre del producto y nombre de la categoría; de lo contrario, verifica la siguiente fila en la tabla products para encontrar la fila correspondiente en la tabla categories. Este proceso continúa hasta que se examina la última fila de la tabla de productos.

SQL INNER JOIN: consulta de datos de tres tablas

Podemos usar las mismas técnicas para unir tres tablas.La siguiente consulta selecciona productID, productName, categoryName y supplier de las tablas products, categories y suppliers:

1
2
3
4
5
6
7
8
9
10
11

SELECT
productID,
productName,
categoryName,
companyName COMO proveedor
FROM
productos
INNER JOIN
categorías EN categorías. categoryID = products.categoryID
INNER JOIN
proveedores EN proveedores.supplierID = productos.supplierID

INNER JOIN de SQL implícito

Existe otra forma de INNER JOIN llamada unión interna implícita como se muestra a continuación:

1
2
3
4
5
6
7

SELECT
columna1, columna2
DESDE
tabla_1,
tabla_2
DONDE
condición_unión;

En este formulario, especifica todas las tablas unidas en la cláusula FROM y coloque la condición de unión en la cláusula WHERE de la instrucción SELECT. Podemos reescribir el ejemplo de consulta anterior usando el INNER JOIN implícito de la siguiente manera:

1
2
3
4
5
6
7

SELECCIONAR
productID, productName, categoryName
FROM
productos,
categorías
DONDE
products.categoryID = categorías.categoryID;

Visualiza INNER JOIN usando el diagrama de Venn

Write a Comment

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *