Organizaciones están generando y analizando inigualable volúmenes de datos con el correr de los minutos. En este artículo, demostraremos cómo podemos emplear SQL Inner Join para consultar y acceder a datos de varias tablas que almacenan estos datos en constante crecimiento en las bases de datos SQL.

SQL Joins

antes de comenzar con SQL Inner Join, me gustaría llamar SQL Join aquí., Join es la cláusula ampliamente utilizada en SQL Server esencialmente para combinar y recuperar datos de dos o más tablas. En una base de datos relacional del mundo real, los datos se estructuran en un gran número de tablas y por eso, hay una necesidad constante de unir estas tablas múltiples basadas en relaciones lógicas entre ellas. Hay cuatro tipos básicos de uniones en SQL Server: interna, externa (izquierda, derecha, completa), Auto y unión cruzada. Para obtener una visión general rápida de todas estas uniones, recomendaría ir a través de este enlace, SQL Join types overview y tutorial.,

Este artículo se dirige a todo sobre la unión interna en SQL Server, así que vamos a ir a él.

definición de SQL Inner Join

la cláusula Inner Join de SQL Server crea una nueva tabla (no física) combinando filas que tienen valores coincidentes en dos o más tablas. Esta combinación se basa en una relación lógica (o un campo común) entre las tablas y se utiliza para recuperar los datos que aparecen en ambas tablas.

supongamos que tenemos dos Tablas, Tabla A y tabla B, que nos gustaría unir usando SQL Inner Join., El resultado de esta combinación será un nuevo conjunto de resultados que devuelve filas coincidentes en ambas tablas. La parte de intersección en negro a continuación muestra los datos recuperados usando Inner Join en SQL Server.

sintaxis de unión interna de SQL Server

a continuación se muestra la sintaxis básica de unión interna.

seleccione Column_list
de TABLE1
INNER JOIN TABLE2
en Table1.ColName = Tabla2.ColName

la sintaxis de unión interna básicamente compara las filas de Table1 con Table2 para verificar si algo coincide en función de la condición proporcionada en la cláusula ON., Cuando se cumple la condición de combinación, devuelve filas coincidentes en ambas tablas con las columnas seleccionadas en la cláusula SELECT.

la cláusula SQL Inner Join es la misma que la cláusula Join y funciona de la misma manera si no especificamos el tipo (INNER) mientras usamos la cláusula Join. En resumen, Inner Join es la palabra clave predeterminada para Join y ambas se pueden usar indistintamente.

Nota-usaremos la palabra clave ‘Inner’ Join en este artículo para mayor claridad. Puede omitirlo mientras escribe sus consultas y también puede usar solo ‘unirse’.,

SQL Inner Join in action

intentemos entender el concepto de Inner Join a través de una interesante muestra de datos que trata sobre una empresa de pizzas y su distribución de alimentos. Voy a crear dos mesas primero: mesa ‘PizzaCompany’ que administra diferentes sucursales de puntos de venta de Pizza en algunas ciudades y mesa ‘alimentos’ que almacena detalles de distribución de alimentos a través de estas empresas. Puede ejecutar el siguiente código para crear y rellenar datos en estas dos tablas. Todos estos datos son hipotéticos y puedes crearlos en cualquiera de tus bases de datos existentes.,

así es como se ven los datos en la tabla PizzaCompany:

vamos a crear y rellenar la tabla de alimentos ahora. CompanyID en esta tabla es la clave foránea que hace referencia a la clave primaria de la tabla PizzaCompany creada anteriormente.

La siguiente tabla muestra los datos en la tabla de Alimentos. Esta tabla almacena información como unidades vendidas por alimento y también el punto de venta de pizza (CompanyId) que lo entrega.,

ahora, si queremos ver los artículos y también las unidades vendidas por cada empresa de pizza, podemos combinar estas dos tablas con la ayuda de una cláusula de unión interna que se utiliza en el campo CompanyId (en nuestro caso, esto comparte una relación de clave externa).

1
2
3
4

SELECCIONE pz.CompanyCity, pz.CompanyName, pz.CompanyId como PizzaCompanyId, f.,CompanyID como FoodsCompanyId, F.ItemName, F.UnitsSold
de PizzaCompany pz
INNER JOIN Foods F
en pz.CompanyId = f.CompanyId

a continuación se muestra el conjunto de resultados de la consulta de unión interna SQL anterior. Para cada fila en Table PizzaCompany, Inner Join compara y encuentra las filas coincidentes en table Foods y devuelve todas las filas coincidentes como se muestra a continuación. Y si observa, CompanyId = 5 se excluye del resultado de la consulta, ya que no coincide en la tabla de alimentos.,

con la ayuda del conjunto de resultados anterior, podemos distinguir los artículos y también el recuento de artículos entregados por puntos de venta de pizza en varias ciudades. Por ejemplo, Dominos hizo una entrega de 7 palitos de pan y 11 Pizza mediana en Los Ángeles.

SQL Inner Join on three tables

exploremos más en este join y supongamos que tres parques acuáticos (parece verano) se abren en el estado y estos parques acuáticos externalizan la comida de los puntos de venta de pizza mencionados en la tabla PizzaCompany.,

voy a crear rápidamente un parque acuático de mesa y cargar algunos datos arbitrarios en él como se muestra a continuación.

y a continuación se muestra la salida de esta tabla.

Como dice el refrán, la imagen vale más que mil palabras. Veamos rápidamente el diagrama de base de datos de estas tres tablas con sus relaciones para entenderlas mejor.

ahora vamos a incluir esta tercera tabla en la cláusula SQL Inner Join para ver cómo va a afectar al conjunto de resultados., Según los datos de la tabla del Parque Acuático, los tres parques acuáticos han estado subcontratando alimentos de todas las empresas de Pizza, excepto Pizzeria (Id=6) y chuck E cheese (Id = 7). Ejecute el siguiente código para ver toda la distribución de alimentos a través de los parques acuáticos por los puntos de venta de Pizza.

1
2
3
4
5
6

SELECCIONE pz.CompanyId, pz.CompanyCity, pz.Nombre de la empresa, f.nombre del artículo, f.,UnitsSold,
w.WaterParkLocation
DE PizzaCompany pz
INNER JOIN Alimentos f EN pz.CompanyId = f.CompanyId
INNER JOIN WaterPark W ON W. CompanyId = pz.CompanyId
Ordenar por pz.CompanyId

basado en CompanyId, SQL Inner Join coincide con filas en ambas tablas, PizzaCompany (Tabla 1) y Foods (Tabla 2) y posteriormente busca una coincidencia en el Parque Acuático (Tabla 3) para devolver filas., Como se muestra a continuación, con la adición de unión interna en el Parque Acuático, CompanyId (6,7 (aparte de 5)) también se excluyen del resultado final establecido como la condición W.CompanyId = pz.CompanyId no está satisfecho con Ids (6,7). Así es como SQL Inner join ayuda a devolver filas específicas de datos de varias tablas.

vamos a profundizar en SQL Inner Join more con algunas cláusulas T-SQL más.

usando WHERE con Inner Join

podemos filtrar registros basados en una condición especificada cuando SQL Inner Join se usa con una cláusula WHERE., Supongamos que nos gustaría obtener las filas donde las unidades vendidas fueron más de 6.

en la siguiente consulta, se añade la cláusula WHERE para extraer resultados con valor superior a 6 para unidades vendidas.

1
2
3
4
5

SELECCIONE pz.CompanyId, pz.CompanyCity, pz.CompanyName, F.ItemName, F. UnitsSold
FROM PizzaCompany pz
INNER JOIN Foods F ON pz.,CompanyId = F. CompanyId
donde F. UnitsSold > 6
Ordenar por pz.CompanyCity

Ejecutar el código anterior en el SSMS a ver el siguiente resultado. Cuatro de estos registros son devueltos por esta consulta.

usar Group By with Inner Join

SQL Inner Join nos permite usar la cláusula Group by junto con funciones aggregate para agrupar el resultado establecido por una o más columnas., Agrupar por trabajos convencionalmente con unión interna en el resultado final devuelto después de unir dos o más tablas. Si no está familiarizado con la cláusula Group by en SQL, le sugeriría pasar por esto para tener una comprensión rápida de este concepto. A continuación se muestra el código que hace uso de la cláusula Group By con la unión interna.

1
2
3
4
5

SELECCIONE pz.CompanyCity, pz.,CompanyName, SUM (F. UnitsSold) AS TotalQuantitySold
FROM PizzaCompany pz
INNER JOIN Foods F ON pz.CompanyId = F. CompanyId
grupo por pz.CompanyCity, pz.Nombre de empresa
Ordenar por pz.CompanyCity

aquí, pretendemos obtener el total de artículos vendidos por cada empresa de Pizza presente en la ciudad. Como puede ver a continuación, se calcula el resultado agregado en la columna ‘totalquantitysold’ como 18 (7+11) y 9 (6+3) Para Los Ángeles y San Diego respectivamente.,

una breve nota sobre Equi y Theta Join

antes de concluir este artículo, repasemos rápidamente los Términos, un desarrollador SQL puede escuchar esporádicamente – Equi y Theta Join.

Equi Join

como su nombre indica, equi join contiene un operador de igualdad ‘=’ en la cláusula Join o en la condición WHERE. SQL Inner, Left, Right son todas las combinaciones equi cuando el operador ‘ = ‘ se utiliza como operador de comparación., Por lo general, cuando hay una mención de SQL Inner Join, se considera como un equi Join interno, en una situación inusual solamente, operador de igualdad no se utiliza.

para hacer las cosas más fáciles, voy a hacer referencia a la base de datos de muestra AdventureWorksDW2017 y disparar una consulta contra las tablas existentes para demostrar cómo se ve equi join.

1
2
3
4

SELECCIONE correo.EmployeeKey, e.,FirstName, E.Title, e.HireDate,
fs.SalesAmountQuota FROM DimEmployee e
INNER JOIN FactSalesQuota fs
ON E.EmployeeKey = fs.EmployeeKey

Theta Join (No equi-join)

No equi-join es básicamente lo opuesto de equi-join y se utiliza cuando nos unimos en una condición diferente al operador’=’. Este tipo rara vez se utiliza en la práctica., Below is an example that makes use of theta join with an inequality operator (<) to evaluate profit by estimating cost and selling prices in two tables.

1
SELECT * FROM Table1 T1, Table2 T2 WHERE T1.ProductCost < T2.,SalesPrice

Conclusion

espero que este artículo sobre ‘SQL Inner Join’ proporcione un enfoque comprensible a una de las cláusulas importantes y frecuentemente utilizadas: ‘Inner join’ en SQL Server para combinar varias tablas. En caso de que tenga alguna pregunta, no dude en preguntar en la sección de comentarios a continuación.,

para continuar su aprendizaje sobre las uniones SQL, puede consultar las siguientes publicaciones:

  • Descripción general y ejemplos de la unión externa de SQL
  • INTRODUCCIÓN Y DESCRIPCIÓN GENERAL DE LA UNIÓN SQL
  • Autor
  • publicaciones recientes
Gauri es un profesional de SQL Server y tiene más de 6 años de experiencia trabajando con organizaciones multinacionales globales de consultoría y tecnología., Le apasiona trabajar en temas de SQL Server como Azure SQL Database, SQL Server Reporting Services, R, Python, Power BI,Database engine, etc. Tiene años de experiencia en documentación técnica y es aficionada a la creación de tecnología.tiene una amplia experiencia en el diseño de soluciones de datos y análisis y en garantizar su estabilidad, fiabilidad y rendimiento. También está certificada en SQL Server y ha pasado certificaciones como 70-463: Implementing Data Warehouses with Microsoft SQL Server.,
ver todas las publicaciones de Gauri Mahajan

últimas publicaciones de Gauri Mahajan (ver todas)
  • Explore el modelo y los datos de Azure Analysis Services – 4 de febrero de 2021
  • primeros pasos con Azure Analysis Services – 13 de enero de 2021
  • conectar datos de Azure Databricks a Power BI Desktop – 1 de junio de 2020